解码JSON数组

时间:2014-10-27 20:39:13

标签: php 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>';

}

为什么它没有返回任何想法?

3 个答案:

答案 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>';
}

希望这有帮助。