JSON
JSON函数
函数 | 描述 |
---|---|
json_encode | 对变量进行JSON编码 |
json_decode | 对JSON格式的字符串进行解码,转为PHP变量 |
json_last_error | 返回最后发生错误 |
json_encode
PHP json_encode() 用于对变量进行 JSON 编码,该函数如果执行成功返回 JSON 数据,否则返回 FALSE
语法
1 | string json_encode ( $value [, $options = 0 ] ) |
参数
- value 要编码的值,该函数只对UTF-8编码的数据有效
- options 由以下常量组成的二进制掩码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_PRESERVE_ZERO_FRACTION, JSON_UNESCAPED_UNICODE, JSON_PARTIAL_OUTPUT_ON_ERROR
实例
运行结果1
2
3
$arr = array('a' => 1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5);
echo json_encode($arr);1
{"a":1,"b":2,"c":3,"d":4,"e":5}
如何将PHP对象转换为JSON格式1
2
3
4
5
6
7
8
9
10
11
12
13
class Emp {
public $name = "";
public $hobbies = "";
public $birthdate = "";
}
$e = new Emp();
$e->name = "sachin";
$e->hobbies = "sports";
$e->birthdate = date('m/d/Y h:i:s a', "8/5/1974 12:20:03 p");
$e->birthdate = date('m/d/Y h:i:s a', strtotime("8/5/1974 12:20:03"));
echo json_encode($e);
运行结果1
{"name":"sachin","hobbies":"sports","birthdate":"08\/05\/1974 12:20:03 pm"}
还可以使用JSON_UNESCAPED_UNICODE选项1
2
3
4
5
$arr = array('runoob' => '菜鸟教程', 'taobao' => '淘宝网');
echo json_encode($arr); // 编码中文
echo PHP_EOL; // 换行符
echo json_encode($arr, JSON_UNESCAPED_UNICODE); // 不编码中文
运行结果1
2{"runoob":"\u83dc\u9e1f\u6559\u7a0b","taobao":"\u6dd8\u5b9d\u7f51"}
{"runoob":"菜鸟教程","taobao":"淘宝网"}
这个例子就可以看到区别了,如果不加选项的话则会将中文也转译为编码
json_decode
json_decode() 函数用于对 JSON 格式的字符串进行解码,并转换为 PHP 变量
语法
1 | mixed json_decode ($json_string [,$assoc = false [, $depth = 512 [, $options = 0 ]]]) |
参数
- json_string 待解码的JSON字符串,必须是UTF-8编码数据
- assoc 当该参数为TRUE时,将返回数组,FALSE时返回对象
- depth 整数类型的参数,它指定递归深度
- options 二进制掩码,目前只支持JSON_BIGINT_AS_STRING
实现
1 | <?php |
运行结果1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24object(stdClass)
[ ]=>
int(1)
[ ]=>
int(2)
[ ]=>
int(3)
[ ]=>
int(4)
[ ]=>
int(5)
}
array(5) {
[ ]=>
int(1)
[ ]=>
int(2)
[ ]=>
int(3)
[ ]=>
int(4)
[ ]=>
int(5)
}
总结
1.JSON转PHP使用json_decode
2.PHP转JSON使用json_encode
3.json_decode的assoc参数为true时,就返回数组,否则就是对象
4.json_encode定义的类型是string;json_decode定义的类型是mixed