JSON多个阵列解码
问题描述:
我有以下代码:JSON多个阵列解码
$json = ' {
"HTML":
[
{
"id": 1,
"name": "HTML",
"match": false
},
{
"id": 2,
"name": "HTML 5",
"match": false
},
{
"id": 3,
"name": "XHTML",
"match": false
}
]
}';
$obj = json_decode($json);
$obj[0][0]->name; // JavaScript: The Definitive Guide
为什么我收到以下错误?型stdClass的的
使用对象作为阵列
我正确地解码JSON,比我说,我想选择从阵列的第一个对象(在这种情况下HTML)和比我想选择数组中第一个的名称。
什么问题?
答
您的第一个JSON是对象(HTML),它包含另一个对象的数组。您必须调用->HTML[0]
(它是您的数组中的第一个对象),然后调用->name
,它是HTML对象的参数。
$obj->HTML[0]->name;
第一级数据不是JSON数组,它是JSON对象,所以PHP将它解码为'stdClass'的一个实例。接下来,数据的第一级是'HTML',而不是'0'。最后,如果你想强制解码来将所有的东西都设置为数组,在你的'json_decode'中设置第二个参数为'true'。 –
第一件事是一个对象,在属性里面'HTML'是你的数组,你想用[[0] - > name]访问它, – Rizier123