博主辛苦了,我要打赏银两给博主,犒劳犒劳站长。
【摘要】从 5.2 版本开始,PHP 原生提供 json_encode() 和 json_decode() 函数,前者用于编码,后者用于解码。本文讲讲在使用这两个函数的时候需要注意的一些知识点。
首先,PHP 对象可以转成 json 格式的数据,如下:
json数据只接受 utf-8 编码的字符,所以json_encode()的参数必须是utf-8编码,否则会得到空字符或者null。当中文使用GB2312编码,或者外文使用ISO-8859-1编码的时候,这一点要特别注意。
class Obj
{
public $body;
public $id;
public $approved;
public $favorite_count;
public $status;
}
$obj = new Obj();
$obj->body = 'another post';
$obj->id = 21;
$obj->approved = true;
$obj->favorite_count = 1;
$obj->status = NULL;
echo json_encode($obj);
输出如下:
{"body":"another post","id":21,"approved":true,"favorite_count":1,"status":null}
对于数组1:
$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:
$arr = Array('one', 'two', 'three');
echo json_encode($arr);
输出:
["one","two","three"]
使用 json_decode 将 json 数据转成 PHP 对象,如果 json_decode() 的第二个参数默认为空则是将其转成 PHP 对象:
$json = '{"a":1,"b":2,"c":3,"d":4,"e":5}';
$json = json_decode($json);
var_dump($json);
输出如下:
object(stdClass)[1]
public 'a' => int 1
public 'b' => int 2
public 'c' => int 3
public 'd' => int 4
public 'e' => int 5
使用 json_decode 将 json 数据转成 PHP 数组,则需要设置 json_decode() 的第二个参数是 true:
$json = '{"a":1,"b":2,"c":3,"d":4,"e":5}';
$json = json_decode($json,true);
var_dump($json);
输出如下:
array (size=5)
'a' => int 1
'b' => int 2
'c' => int 3
'd' => int 4
'e' => int 5
$bad_json = "{ 'bar': 'baz' }";
$bad_json = '{ bar: "baz" }';
$bad_json = '{ "bar": "baz", }';
对这三个字符串执行json_decode()都将返回null,并且报错。第一个的错误是,json的分隔符(delimiter)只允许使用双引号,不能使用单引号。第二个的错误是,json名值对的"名"(冒号左边的部分),任何情况下都必须使用双引号。第三个的错误是,最后一个值之后不能添加逗号(trailing comma)。另外,json只能用来表示对象(object)和数组(array),如果对一个字符串或数值使用json_decode(),将会返回null。
var_dump(json_decode("Hello World")); // null
版权归 马富天PHP博客 所有
本文标题:《在 PHP 语言中 json_encode 和 json_decode 对 json 格式数据和数组的操作》
本文链接地址:http://www.mafutian.net/239.html
转载请务必注明出处,小生将不胜感激,谢谢! 喜欢本文或觉得本文对您有帮助,请分享给您的朋友 ^_^
顶0
踩0
第 1 楼 凯哥自媒体 2016-12-28 10:59:12 河南郑州
评论审核未开启 |