如何在
php 中正确的使用 json
从
5.2 版本开始,PHP 原生提供 json_encode()和 json_decode()函数,前者用于编码,后
者用于解码。
1、json_encode()
该函数主要用来将数组和对象,转换为
json 格式。先看一个数组转换的例子:
$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}
再看一个对象转换的例子:
代码如下
$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
}
由于
json 只接受 utf-8 编码的字符,所以 json_encode()的参数必须是 utf-8 编码,否则会得
到空字符或者
null。当中文使用 GB2312 编码,或者外文使用 ISO-8859-1 编码的时候,这一
点要特别注意。
2、索引数组和关联数组
PHP 支持两种数组,一种是只保存"值"(value)的索引数组(indexed array),另一种是保
存
"名值对"(name/value)的关联数组(associative array)。
由于
javascript 不支持关联数组,所以 json_encode()只将索引数组(indexed array)转
为数组格式,而将关联数组(
associative array)转为对象格式。
比如,现在有一个索引数组:
$arr = Array('one', 'two', 'three');
echo json_encode($arr);
其输出结果为:
["one","two","three"]