你所不认识的php函数json_decode和json_encode
发布于 作者:苏南大叔 来源:程序如此灵动~本篇文章中,苏南大叔要和大家分享一个非常常见的php
函数json_decode
/json_encode
的使用方法。大家经常使用这个这个函数,用于把一段字符串,变成一个json
对象。但是不知道大家有没有仔细想过这两个函数的更深层次的用法呢?
本篇文章的姐妹文章是:你所不认识的php
函数file_get_contents
。
json_decode
的第二个参数
json_decode
存在着第二个/第三个/第四个 参数,详情可以参见这里:
虽然我们经常使用的,仅仅是第一个参数。苏南大叔今天想给大家说说json_decode
的第二个参数。先看看下面的例子。
$json = '{"a":1,"b":2,"c":3}';
var_dump(json_decode($json));
var_dump(json_decode($json, true));
我们来看一下输出。
json_decode
第二个参数,默认为false
,返回的是object
。当为true
的时候,返回的是array
。
json_encode
的第二个参数
同样,json_encode
,也存在着很多个参数。但是苏南大叔只想和大家分享一下,第二个参数中的一个特殊用法。同样,看例子说话。
$a = array("中文","english");
echo "Normal: ", json_encode($a), "\n";
echo "Unicode: ", json_encode($a, JSON_UNESCAPED_UNICODE), "\n";
这个的输出是:
JSON_UNESCAPED_UNICODE
,这个参数值对于我们平时调试php
,非常有用。使用他的话,中文输出还是中文,而不加它的话,中文汉字就会被编码成,我们不认识的“乱码”。那么处于实际情况考虑,对于大家来说,这第二个参数,都应该恒定是JSON_UNESCAPED_UNICODE
,才更好些。
JSON_UNESCAPED_UNICODE
在测试中的实际值是256
,所以,如果记不住这个很长的英文字符串,直接写数字256
也是可以的。
两个json
函数的调试
这两个函数如果数据处理失败的情况,虽然并不常见。但是,碰到的话,我们在屏幕上却看不到任何的错误输出。这两个函数是使用json_last_error()
来获取错误信息的。真个是不是很超乎意料?具体的例子,可以参见这里。
对于普通的情况上来说,我们只需要对比json_last_error()
是不是等于JSON_ERROR_NONE
即可。如果为true
,就是没有错误拉。否则,就是有错误拉。具体的错误代码,请参见文档说明。
//...
$json_obj = json_decode($content_json, TRUE);
if ($json_obj) {
//...
} else {
$ret = json_last_error();
switch($ret){
//...
}
}
总结
php
虽然是世界上最好的语言,但是深入了解后,就会觉得它是那么的神奇到不可思议。哈哈哈~~~ 更多php
相关文章,请点击这里来支持苏南大叔。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。