2013-11-25 3 views
1

У меня есть json-файл, и я хочу отображать его с помощью PHP. Мой ниже код дает мне ошибку,Извлечь данные json с помощью PHP

$json = file_get_contents('data.json'); 
$data = json_decode($json,true); 
$users = $data['devices']; 
foreach($users as $user) 
{ 
echo $user['id']; 
echo $user['user']; 
} 

Когда я заменить 3-й LOC с $users = $data['user']; затем отображать некоторые данные с одного алфавита я не знаю, в каком порядке.

Data.json файл содержит следующие данные

{ 
"user": 
    { 
    "id":"#03B7F72C1A522631", 
    "user":"[email protected]", 
    "password":"123", 
    "email":"[email protected]", 
    "name":"m", 
    "creationDate":1385048478, 
    "compression":true, 
    "imageProfile":"medium", 
    "videoProfile":"medium", 
    "blockAdvert":true, 
    "blockTracking":true, 
    "devices":[ 
     { 
     "id":"#13C73379A7CC2310", 
     "udid":"cGMtd2luNi4xLV", 
     "user":"[email protected]", 
     "creationDate":1385048478, 
     "status":"active", 
     }, 
     { 
     "id":"#FE729556EDD9910D", 
     "udid":"C1N1", 
     "user":"[email protected]", 
     "creationDate":1385291938, 
     "status":"active", 
     }] 
    }, 
"status": 
    { 
    "version":"0.9.5.0", 
    "command":"getuser", 
    "opf":"json", 
    "error":false, 
    "code":0 
    } 
} 

ответ

3

Я думаю, что вы можете делать отображать всю информацию devices, Вы можете изменять код:

$json = file_get_contents('data.json'); 
$data = json_decode($json,true); 

// change the variable name to devices which is clearer. 
$devices = $data['user']['devices']; 
foreach ($devices as $device) 
{ 
    echo $device['id']; 
    echo $device['user']; 
} 
+0

Большое вам спасибо, теперь он работает отлично со мной :) – Arif

1

Вы не доступ к вашему JSON правильно. Вам нужно получить к нему доступ так.

$yourVariable = $data['users']['devices']; 

Попробуйте это.

+0

OP написал '$ данных = json_decode ($ JSON, правда);', который возвращает массив вместо объект. –

+0

http://docs.php.net/json_decode документация говорит, что если параметр $ assoc является истинным, он превратит объекты в ассоциативные массивы. Я уверен, что это неверно, по умолчанию исправьте меня, если я ошибаюсь. – ddelnano

+0

http://www.phpriot.com/manual/php/function.json-decode В этом примере показано, что объект возвращается по умолчанию, если параметр $ assoc отсутствует. – ddelnano

4

Я считаю, что вы пропустили 1 узел, попробуйте:

$users = $data['user']['devices']; 
4

Это должно работать;

$json = file_get_contents('data.json'); 
$data = json_decode($json,true); 
$users = $data['user']['devices']; 
foreach($users as $user) { 
    echo $user['id']; 
    echo $user['user']; 
} 

Существует один ключ перед тем 'устройств'.

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