PHP JSON解码 - stdClass

时间:2010-11-02 18:11:55

标签: php json stdclass

我有一个关于制作2D JSON string

的问题

现在我想知道为什么我无法访问以下内容:

$json_str = '{"urls":["http://example.com/001.jpg","http://example.com/003.jpg","http://example.com/002.jpg"],"alts":["testing int chars àèéìòóù stop","second description",""],"favs":["true", "false", "false"]}';

$j_string_decoded = json_decode($json_str);
// echo print_r($j_string_decoded); // OK

// test get url from second item
echo j_string_decoded['urls'][1];
// Fatal error: Cannot use object of type stdClass as array

3 个答案:

答案 0 :(得分:24)

您正在使用类似数组的语法访问它:

echo j_string_decoded['urls'][1];

返回对象。

通过指定true的第二个参数将其转换为数组:

$j_string_decoded = json_decode($json_str, true);

成功:

$json_str = '{"urls":["http://site.com/001.jpg","http://site.com/003.jpg","http://site.com/002.jpg"],"alts":["testing int chars àèéìòóù stop","second description",""],"favs":["true", "false", "false"]}';

$j_string_decoded = json_decode($json_str, true);
echo j_string_decoded['urls'][1];

或试试这个:

$j_string_decoded->urls[1]

注意用于对象的->运算符。

从文档引用

  

返回json中编码的值   适当的PHP类型。值为true,   false和null(不区分大小写)是   返回为TRUE,FALSE和NULL   分别。如果是,则返回NULL   json无法解码或是否   编码数据比   递归限制。

http://php.net/manual/en/function.json-decode.php

答案 1 :(得分:7)

默认情况下,

json_decode会将JSON词典转换为PHP对象,因此您可以将您的值作为$j_string_decoded->urls[1]

访问

或者您可以传递一个额外的参数json_decode($json_str,true),让它返回关联数组,然后与$j_string_decoded['urls'][1]

兼容

答案 2 :(得分:5)

使用:

json_decode($jsonstring, true);

返回一个数组。