Не нравятся результаты поиска? Попробуйте другой поиск!
DLE FAQ » Все вопросы » Общие вопросы » Помогите разобрать JSON

Помогите разобрать JSON


     07.02.2014    Общие вопросы, Общие вопросы по PHP    3120

вопрос
Всем привет. На ваш сайт пришел не случайно. Столкнулся с такой проблемой.

Приходит простой JSON к примеру такой:

{"X":4444,"x2":4445,"x3":4221}

Я его с легкостью разбираю.
$result=file_get_contents("его путь"); //{"X":4444,"x2":4445,"x3":4221}

$obj = json_decode($result);
$x= $obj->{'X'};
$x2= $obj->{'x2'};


А вот сложный JSON, как этот, где содержится массив:
{"xz":233,"z":4545,"x":[{"x1":1146,"x2":554544}]}

Почему то не получается, половину гугла перерыл - не нашел нужного. Или нашел - но не то. Помогите начать, а дальше сам. Спасибо заранее ;)

Ответа пока нет


9 комментариев

R00t
Юзер

R00t - 7 февраля 2014 17:19 -

foreach($obj->x as $val){

}

vk_159926832
Юзер

vk_159926832 - 7 февраля 2014 17:59 -

Не помогло, сейчас продемонстрирую кусок кода который приходит


$result='{"request":[{"id":21,"log":"Буквы","num":"3","img":"http://сайт.ру/фотка.жпг"}]}';

$obj = json_decode($result);

//"вычисления"

Посоветуете ещё?

rocksmart
Юзер

rocksmart - 7 февраля 2014 17:45 -

Лучне так

$obj = json_decode($result, true);


А потом как простой массив. Можно через функцию рекурсии если не известно колоичество вложений


$result ='{"xz":233,"z":4545,"x":[{"x1":1146,"x2":554544}]}';

$obj = json_decode($result, true);

echo'<pre>';print_r($obj);echo'</pre>';


function pereborjson($arr){foreach ($arr as $el) {if (is_array($el)) pereborjson($el); else echo  $el.'<br>';}}


echo pereborjson($obj);


[code][/code]

vk_159926832
Юзер

vk_159926832 - 7 февраля 2014 18:12 -

Спасибо за ответ, rocksmart ! попробовал, но выдал белый экран (в общем то как и раньше).

А кодировка не влияет, так как поступают данные в UTF а у меня 1251.

$result= iconv( "utf-8", "windows-1251", $result);

R00t
Юзер

R00t - 7 февраля 2014 18:18 -

но выдал белый экран

пример от rocksmart работает, белого екрана нет
включите вывод ошибок для отладки

rocksmart
Юзер

rocksmart - 7 февраля 2014 18:18 -

Это случайно не для js?

vk_159926832
Юзер

vk_159926832 - 7 февраля 2014 18:27 -

Нет, ответ приходит JSON.

ПафНутиЙ
Админ

ПафНутиЙ - 7 февраля 2014 20:52 -

А json правильно приходит? т.е. в правильном формате?
попробуйте сгенерить массив, закодировать его, а потом раскодировать тем кодом, который используете.

Каков вопрос - таков и ответ. Просто помните об этом.

vk_159926832
Юзер

vk_159926832 - 8 февраля 2014 10:33 -

Конечно, в формате .json.
$result=file_get_contents("его путь");


Вот например первый JSON, простой, который без массивов всяких получается разобрать верно
$result=file_get_contents("его путь"); //{"X":4444,"x2":4445,"x3":4221}

$obj = json_decode($result);
$x= $obj->{'X'};
$x2= $obj->{'x2'};


А второй с массивом никак.

Чтобы комментировать - войдите или зарегистрируйтесь на сайте

Похожие вопросы

наверх