json_decode对JSON格式的字符串进行编码而json_encode对变量进行JSON编码,需要的朋友可以参考下
1.json_decode()
json_decode
(PHP 5=5.2.0,PECL json=1.2.0)
json_decode —对JSON格式的字符串进行编码
说明
混合json_decode ( string $json [,bool $assoc ])
接受一个JSON格式的字符串并且把它转换为服务器端编程语言(专业超文本预处理器的缩写)变量
参数
json
待解码的json字符串格式的字符串。
协会
当该参数为真实的时,将返回排列而非对象。
返回值
返回一个对象,或者如果可选的协会参数为没错,则返回一个关联数组。
范例
示例#1 json_decode()的例子
复制代码代码如下:
?服务器端编程语言(专业超文本预处理器的缩写)
$json='{'a':1,' b':2,' c':3,' d':4,' e ':5 } ';
var _ dump(JSON _ decode($ JSON));
var_dump(json_decode($json,true));
?
上例将输出:
复制代码代码如下:
对象(标准类)#1 (5) {
['a']=int(1)
['b']=int(2)
['c']=int(3)
['d']=int(4)
['e']=int(5)
}
数组(5) {
['a']=int(1)
['b']=int(2)
['c']=int(3)
['d']=int(4)
['e']=int(5)
}
复制代码代码如下:
$data='[{'Name':'a1 ',' Number':'123 ',' Contno':'000 ',' QQNo':''},{'Name':'a1 ',' Number ':' ' },{'Name':'a1 ',' Number':'123 ',' Contno':'000 ',' QQNo ':' ' }]';
echo JSON _ decode($ data);
结果为:
复制代码代码如下:
数组([0]=标准类对象([Name]=a1[Number]=123[Contno]=000[QQNo]=)[1]=标准类别对象([姓名]=a1[号码]=123[连续号码]=000[QQNo])[2]=标准类别对象([姓名]=a1[号码]=123[号码]=000[QQNo]=))
可以看出经过json_decode()编译出来的是对象,现在输出json_decode($data,true)试下
复制代码代码如下:
echo json_decode($data,true);
结果:
复制代码代码如下:
Array([0]=Array([Name]=a1[Number]=123[Contno]=000[QQNo])[1]=Array([Name]=a1[Number]=123[Contno]=000[QQNo]=)[2]=Array([Name]=a1[Number]=123[Contno]=000[QQNo])
可以看出json_decode($data,true)输出的一个关联数组,由此可知json_decode($data)输出的是对象,而json_decode('$arr ',true)是把它强制生成服务器端编程语言(专业超文本预处理器的缩写)关联数组。
json_encode()
json_encode
(PHP 5=5.2.0,PECL json=1.2.0)
json_encode —对变量进行JSON编码
报告一个错误说明
字符串json_encode(混合$value [,int $options=0 ])
返回价值值的JSON形式
报告一个错误参数
价值
待编码的值,除了资源类型之外,可以为任何数据类型
该函数只能接受UTF-8编码的数据
选择
由以下常量组成的二进制掩码:JSON_HEX_QUOT,JSON_HEX_TAG,JSON_HEX_AMP,JSON_HEX_APOS,JSON_NUMERIC_CHECK,JSON_PRETTY_PRINT,JSON _ UNESCAPED _ SLASHES,JSON_FORCE_OBJECT,JSON _ UNESCAPED _ UNICODE .
报告一个错误返回值
编码成功则返回一个以JSON形式表示的线或者在失败时返回错误。
报告一个错误更新日志
版本说明
5.4.0选项参数增加常量:JSON_PRETTY_PRINT,JSON_UNESCAPED_SLASHES,和JSON_UNESCAPED_UNICODE。
选项参数增加常量:JSON_NUMERIC_CHECK。
5.3.0 增加选择参数。
报告一个错误范例
例#1一个json_encode()的例子
复制代码代码如下:
?服务器端编程语言(专业超文本预处理器的缩写)
$arr=array ('a'=1,' b'=2,' c'=3,' d'=4,' e '=5);
echo JSON _ encode($ arr);
?
以上例程会输出:
复制代码代码如下:
{'a':1,' b':2,' c':3,' d':4,' e':5}
示例2 json_encode()函数中选择参数的用法
复制代码代码如下:
?服务器端编程语言(专业超文本预处理器的缩写)
$a=array('foo ',' bar ',' baz ',' blong ',' \ xc3 \ xa9 ');
echo 'Normal:',json_encode($a),' \ n ';
回声标记: ',json_encode($a,JSON_HEX_TAG),' \ n ';
echo ' Apos:' JSON _ encode($ a,JSON_HEX_APOS),' \ n ';
echo 'Quot:',json_encode($a,JSON_HEX_QUOT),' \ n ';
echo 'Amp:',json_encode($a,JSON_HEX_AMP),' \ n ';
echo 'Unicode:',json_encode($a,JSON_UNESCAPED_UNICODE),' \ n ';
echo 'All:',json_encode($a,JSON _ HEX _ TAG | JSON _ HEX _ APOS | JSON _ HEX _ QUOT | JSON _ HEX _ AMP | JSON _ UNESCAPED _ UNICODE),' \ n \ n ';
$ b=array();
“回声”空数组输出为数组:",json_encode($b)," \ n ";
“回声”空数组输出为对象:",json_encode($b,JSON_FORCE_OBJECT)," \ n \ n ";
$c=array(array(1,2,3));
“回声”非关联数组输出为数组:",json_encode($c)," \ n ";
回声非关联数组输出为对象:',json_encode($c,JSON_FORCE_OBJECT),' \ n \ n ';
$d=array('foo'='bar ',' baz '=' long ');
“回声”关联数组始终输出为对象:",json_encode($d)," \ n ";
“回声”关联数组始终输出为对象:',json_encode($d,JSON_FORCE_OBJECT),' \ n \ n ';
?
以上例程会输出:
复制代码代码如下:
正常:['foo ',' bar ',' baz ',' blong ',' \u00e9']
标签:['\u003Cfoo\u003E ',' bar ',' baz ',' blong ',' \u00e9']
Apos: ['foo ',' \u0027bar\u0027 ',' baz ',' blong ',' \u00e9']
Quot: ['foo ',' bar ',' \u0022baz\u0022 ',' blong ',' \u00e9']
Amp: ['foo ',' bar ',' baz ',' \u00e9']
Unicode: ['foo ',' bar ',' baz ',' blong ','']
all:[' \ u 003 CFO \ u 003 e ',' \u0027bar\u0027 ',' \u0022baz\u0022 ',' \u0026blong\u0026 ',']
空数组输出为数组:[]
作为对象的空数组输出:{}
非关联数组输出为数组:[[1,2,3]]
作为对象的非关联数组输出:{'0':{'0':1,' 1':2,' 2':3}}
关联数组总是作为对象输出:{'foo':'bar ',' baz':'long'}
关联数组总是作为对象输出:{'foo':'bar ',' baz':'long'}
实施例3连续与非连续数组示例
复制代码代码如下:
?服务器端编程语言(专业超文本预处理器的缩写)
回声连续数组. PHP _ EOL
$sequential=array('foo ',' bar ',' baz ',' blong ');
var_dump(
$连续,
json_encode($sequential)
);
回显PHP_EOL .'非连续数组. PHP _ EOL
$nonsequential=array(1='foo ',2='bar ',3='baz ',4=' blong ');
var_dump(
$非顺序,
json_encode($nonsequential)
);
回显PHP_EOL .'删除一个连续数组值的方式产生的非连续数组. PHP _ EOL
unset($ sequential[1]);
var_dump(
$连续,
json_encode($sequential)
);
?
以上例程会输出:
复制代码代码如下:
连续数组
数组(4) {
[0]=
字符串(3)“foo”
[1]=
字符串(3)'条形'
[2]=
字符串(3)“巴兹”
[3]=
字符串(5)“布隆”
}
string(27) '['foo ',' bar ',' baz ',' blong']'
非连续数组
数组(4) {
[1]=
字符串(3)“foo”
[2]=
字符串(3)'条形'
[3]=
字符串(3)“巴兹”
[4]=
字符串(5)“布隆”
}
string(43) '{'1':'foo ',' 2':'bar ',' 3':'baz ',' 4':'blong'} '
删除一个连续数组值的方式产生的非连续数组
数组(3) {
[0]=
字符串(3)“foo”
[2]=
字符串(3)“巴兹”
[3]=
字符串(5)“布隆”
}
string(33) '{'0':'foo ',' 2':'baz ',' 3':'blong'} '
复制代码代码如下:
$ obj-Name=' a1 ';$ obj-Number=' 123 ';
$ obj-Contno=' 000 ';
echo JSON _ encode($ obj);
结果为:
复制代码代码如下:
{ '姓名:' a1 ',
数量':' 123 ',
Contno':'000 '
}
可以看出json_encode()和json_decode()是编译和反编译过程,注意json只接受utf-8编码的字符,所以json_encode()的参数必须是utf-8编码,否则会得到空字符或者零。
PS:本站还提供了几款功能十分强大的json解析、转换与格式化工具供大家选择使用,相信对于大家接下来的json格式数据处理会有所帮助:
在线JSON代码检验、检验、美化、格式化工具:
http://tools.jb51.net/code/json
在线XML/JSON互相转换:
http://tools.jb51.net/code/xmljson
json代码在线格式化/美化/压缩/编辑/转换工具:
http://tools.jb51.net/code/jsoncodeformat
C语言风格/HTML/CSS/json代码格式化美化工具:
http://tools.jb51.net/code/ccode_html_css_json
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。