解码JSON数组
问题描述:
我正在努力解析一个简单的JSON数组,我对此很感兴趣,所以试图学习。解码JSON数组
这里的数据:
{"data":[
{"name":"john","id":"123"},
{"name":"dave","id":"345"}
], "other":
{"foo":"bar"}
}
我只希望data
信息。
这里的我想要什么(也还有什么我试过):
$list = json_decode(file_get_contents($jsonURL),true);
foreach ($list as $element){
//$id = $element->data->id; // this didn't work either
//$name = $element->data->name; // this didn't work either
$id = $element[data][id];
$name = $element[data][name];
$message .= $id.' - '.$name.'</br>';
}
为什么它没有返回任何想法?
答
$json = '{"data":[
{"name":"john","id":"123"},
{"name":"dave","id":"345"}
], "other":
{"foo":"bar"}
}';
$list = json_decode($json,true);
foreach ($list['data'] as $item) {
echo $item['id'] . "\n";
echo $item['name'] ."\n\n";
}
下面是如何使用该数据的完美示例。
答
首先,你的代码有错误。使用字符串来访问$元素的成员:$element['data']
。然后,我会认为整个数据结构将是列表的第一个元素,这样你就可以像这样访问:
$list = json_decode(file_get_contents($jsonURL),true);
$data = $list['data'];
$id = $data['id'];
$name = $data['name'];
$message .= $id.' - '.$name.'</br>';
答
我很惊讶,每个人都告诉你访问使用数组中的数据。 JSON是一个基于对象的系统,您应该使用对象符号访问数据。问题在于你试图遍历主要对象,而不是其中的data
部分。
您应该改为:
$list = json_decode(file_get_contents($jsonURL),true);
$data = $list->data;
foreach ($data as $element) {
$id = $element->id;
$name = $element->name;
$message .= $id.' - '.$name.'</br>';
}
希望这会有所帮助。