2014-10-27 2 views
1

Я изо всех сил пытаюсь разобрать простой массив 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>'; 

} 

Любые идеи, почему она ничего не возвращает?

ответ

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"; 
} 

Вот отличный пример того, как работать с этими данными.

0

Прежде всего, у вас есть ошибки в коде. Используйте строки для доступа к элементам элемента $: $element['data']. Тогда, я думаю, буду что вся структура данных будет первым элементом списка, так что вы можете получить доступ к нему, как это:

$list = json_decode(file_get_contents($jsonURL),true); 
$data = $list['data']; 

$id = $data['id']; 
$name = $data['name']; 

$message .= $id.' - '.$name.'</br>'; 
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>'; 
} 

Надеюсь, это поможет.

Смежные вопросы