四、json_decode()
该函数用于将 json 文本转换为相应的 PHP 数据结构。下面是一个例子:
38 $json = '{"foo": 12345}';
39 $obj = json_decode($json);
40 print $obj->{'foo'}; // 12345
通常情况下,json_decode()总是返回一个 PHP 对象,而不是数组。比如:
41 $json = '{"a":1,"b":2,"c":3,"d":4,"e":5}';
42 var_dump(json_decode($json));
结果就是生成一个 PHP 对象:
43 object(stdClass)#1 (5) {
44 ["a"] => int(1)
45 ["b"] => int(2)
46 ["c"] => int(3)
47 ["d"] => int(4)
48 ["e"] => int(5)
49 }
如果想要强制生成 PHP 关联数组,json_decode()需要加一个参数 true:
50 $json = '{"a":1,"b":2,"c":3,"d":4,"e":5}';
51 var_dump(json_decode($json),true);
结果就生成了一个关联数组:
52 array(5) {
53 ["a"] => int(1)
54 ["b"] => int(2)
55 ["c"] => int(3)
56 ["d"] => int(4)
57 ["e"] => int(5)
58 }
五、json_decode()的常见错误
下面三种 json 写法都是错的,你能看出错在哪里吗?
59 $bad_json = "{ 'bar': 'baz' }";
60 $bad_json = '{ bar: "baz" }';
61 $bad_json = '{ "bar": "baz", }';
对这三个字符串执行 json_decode()都将返回 null,并且报错。
第一个的错误是,json 的分隔符(delimiter)只允许使用双引号,不能使用单引号。第二
个的错误是,json 名值对的"名"(冒号左边的部分),任何情况下都必须使用双引号。第