关于php中的json_encode()和json_decode()函数的一些说明


Posted in PHP onNovember 20, 2016

一,json语法( php中的json_decode($json)中的$json要符合json语法格式 )

① JSON可以表示三种类型的值

1,简单值。包括整型,字符串型,布尔值和null。例如:5,"hello world",true,null都是有效的JSON数据。其中JSON字符串必须使用双引号(单引号会导致语法错误)。

2,对象。如,{"name":"tony","age":15}。说明①要求属性必须用双引号(不加或者单引号都是错误的)②值可以是简单值(注意若值为字符串,必须用双引号,不能用单引号),也可以是复杂类型的值(对象或数组)。

3,数组。如,[25,true,"tony"]。说明:数组的值也可以是任意类型。

二,php定义对象字面量时,不支持直接书写,如{"a":"11","b":"22"}。这种书写方式在其他语言中被支持,在php中需要按如下方式定义:

$a = '{"a":"11","b":"22"}' ;【这是json字符串,不加外面的单引号则是json对象】

$b = json_decode($a);

这样$b就是对象字面量了。

三,上述三种数值类型经过json_encode($value)转化后,会输出json格式(此时类型为字符串),如"hello",{},[]。输出的结果可以在其他地方(javascrip,ios,java,php等等)被解析使用。

四,php中改进后的json_encode()和json_decode()函数,支持汉语(原生的不支持汉语)

注:php中不可直接改写原生函数,需要写在类里,作为类的一个方法

 

static function json_encode($input)
{
// 从 PHP 5.4.0 起, 增加了这个选项.
if (defined('JSON_UNESCAPED_UNICODE')) {
return json_encode($input, JSON_UNESCAPED_UNICODE);
}

if (is_string($input)) {
$text = $input;
$text = str_replace('\\', '\\\\', $text);
$text = str_replace(
array("\r", "\n", "\t", "\""),
array('\r', '\n', '\t', '\\"'),
$text);
return '"' . $text . '"';
} else if (is_array($input) || is_object($input)) {
$arr = array();
$is_obj = is_object($input) || (array_keys($input) !== range(0, count($input) - 1));
foreach ($input as $k => $v) {
if($v == null){
$v = 'null';
}
if ($is_obj) {
$arr[] = self::json_encode($k) . ':' . self::json_encode($v);
} else {
$arr[] = self::json_encode($v);
}
}

if ($is_obj) {
return '{' . join(',', $arr) . '}';
} else {
return '[' . join(',', $arr) . ']';
}
} else {
return $input . '';
}
}

以上这篇关于php中的json_encode()和json_decode()函数的一些说明就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
PHP4之COOKIE支持详解
Oct 09 PHP
NO3第三帝国留言簿制作过程
Oct 09 PHP
php csv操作类代码
Dec 14 PHP
谷歌音乐搜索栏的提示功能php修正代码
May 09 PHP
那些年一起学习的PHP(二)
Mar 21 PHP
php防止SQL注入详解及防范
Nov 12 PHP
PHP内核探索:变量存储与类型使用说明
Jan 30 PHP
php实现复制移动文件的方法
Jul 29 PHP
Smarty环境配置与使用入门教程
May 11 PHP
PHP实现的观察者模式实例
Jun 21 PHP
Thinkphp5框架实现图片、音频和视频文件的上传功能详解
Aug 27 PHP
Laravel基础-关于引入公共文件的两种方式
Oct 18 PHP
thinkphp利用模型通用数据编辑添加和删除的实例代码
Nov 20 #PHP
php运行报错Call to undefined function curl_init()的最新解决方法
Nov 20 #PHP
php中strtotime函数性能分析
Nov 20 #PHP
php的socket编程详解
Nov 20 #PHP
PHP内置加密函数详解
Nov 20 #PHP
php PDO异常处理详解
Nov 20 #PHP
php.ini中date.timezone设置详解
Nov 20 #PHP
You might like
PHP清除数组中所有字符串两端空格的方法
2014/10/20 PHP
PHP永久登录、记住我功能实现方法和安全做法
2015/04/27 PHP
在WordPress中获取数据库字段内容和添加主题设置菜单
2016/01/11 PHP
Apache PHP MySql安装配置图文教程
2016/08/27 PHP
PHP读取文本文件并逐行输出该行使用最多的字符与对应次数的方法
2016/11/25 PHP
javascript中的几个运算符
2007/06/29 Javascript
jQuery maxlength文本字数限制插件
2010/04/16 Javascript
Javascript高级技巧分享
2014/02/25 Javascript
基于jquery实现的图片在各种分辨率下未知的容器内上下左右居中
2014/05/11 Javascript
jQuery实现鼠标滑过Div层背景变颜色的方法
2015/02/17 Javascript
JavaScript原生对象之String对象的属性和方法详解
2015/03/13 Javascript
Windows下用PyCharm和Visual Studio开始Python编程
2015/10/26 Javascript
关于Vue.js一些问题和思考学习笔记(2)
2016/12/02 Javascript
JS树形菜单组件Bootstrap TreeView使用方法详解
2016/12/21 Javascript
Bootstrap fileinput组件封装及使用详解
2017/03/10 Javascript
C#微信小程序服务端获取用户解密信息实例代码
2017/03/10 Javascript
javascript实现考勤日历功能
2018/11/29 Javascript
jQuery实现input[type=file]多图预览上传删除等功能
2019/08/02 jQuery
Python中map,reduce,filter和sorted函数的使用方法
2015/08/17 Python
python获取代理IP的实例分享
2018/05/07 Python
在Python中获取两数相除的商和余数方法
2018/11/10 Python
Django跨域请求CSRF的方法示例
2018/11/11 Python
Python 获取中文字拼音首个字母的方法
2018/11/28 Python
Python实现直方图均衡基本原理解析
2019/08/08 Python
python匿名函数lambda原理及实例解析
2020/02/07 Python
Python 常用日期处理 -- calendar 与 dateutil 模块的使用
2020/09/02 Python
css3 伪类选择器快速复习小结
2019/09/10 HTML / CSS
HTML5 canvas画矩形时出现边框样式不一致的解决方法
2013/10/14 HTML / CSS
Vilebrequin欧洲官网:法国豪华泳装品牌(男士沙滩裤)
2018/04/14 全球购物
销售人员自我评价
2014/02/01 职场文书
初中优秀学生评语
2014/12/29 职场文书
虎兄虎弟观后感
2015/06/12 职场文书
《鸟的天堂》教学反思
2016/02/19 职场文书
小学运动会开幕词
2016/03/04 职场文书
Java8 Stream API 提供了一种高效且易于使用的处理数据的方式
2022/04/13 Java/Android
使用Nginx+Tomcat实现负载均衡的全过程
2022/05/30 Servers