我为此找到了解决方案的高低,但却找不到任何我正在遇到的东西。我使用php来解析嵌套的JSON响应,这种响应很难提取特定的字段。
这里有一些JSON:
{
"collection":{
"items":[
{
"href":"https://api.teamsnap.com/v3/members/MEMBERID",
"data":[
"name":"id",
"value": 0000000 // MEMBERID
},
{
"name":"type",
"value":"member"
},
{
"name":"address_city",
"value":""
},
{
"name":"address_state",
"value":""
},
这是我的php:
$json = file_get_contents($url, false, $context);
$result = json_decode($json);
foreach ($result->collection->items as $items=>$val) {
foreach ($val->data as $data=>$datasets) {
foreach ($datasets as $dataset=>$val) {
echo $dataset.': '.$val;
echo "<br>";
}
}
};
这是当前输出的一点:
name: id
value: MEMBERID
name: first_name
value: MEMBERNAME
name: last_name
value: MEMBERNAME
我想要做的是能够使用他们的名字和姓氏列出此回复中的所有成员。我尝试过使用$ val-&gt; first_name,$ val [&#39; first_name&#39;];这样但都会导致foreach错误。
答案 0 :(得分:2)
如果您可以确保每个data
成员都有name
和value
字段,您可以使用类似的内容并跳过for循环:
$json = file_get_contents($url, false, $context);
$result = json_decode($json);
foreach ($result->collection->items as $itemKey => $val) {
$data = array();
foreach ($val->data as $dataKey => $dataset) {
$data[$dataset->name] = $dataset->value;
}
var_dump($data);
};
虽然你应该先检查$result->collection
和$result->collection->items
然后再循环它们以避免错误。