我正在努力解析一个简单的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>';
}
为什么它没有返回任何想法?
答案 0 :(得分:4)
$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";
}
以下是如何使用该数据的完美示例。
答案 1 :(得分:0)
首先,您的代码中存在错误。使用字符串访问$元素的成员:$element['data']
。然后,我认为整个数据结构将是列表的第一个元素,因此您可以像这样访问它:
$list = json_decode(file_get_contents($jsonURL),true);
$data = $list['data'];
$id = $data['id'];
$name = $data['name'];
$message .= $id.' - '.$name.'</br>';
答案 2 :(得分:0)
我很惊讶每个人都告诉你使用数组访问数据。 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>';
}
希望这有帮助。