解码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>'; 
} 

希望这会有所帮助。