我有一个关于制作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
答案 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无法解码或是否 编码数据比 递归限制。
答案 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);
返回一个数组。