Работа с JSON парсинг перевод в объекты массивы функция json_decode

JSON (JavaScript Object Notation) – это особый вид представления данных, удобный для экспорта (импорта) информации с удаленного сервера на Ваш сайт (либо – наоборот).

JSON используется во многих API интерфейсах. Если говорить о API вкратце, то это технология позволяющая получать информацию с удаленных интернет сервисов.

Будь то новости, погода или биржевые котировки, JSON помогает Вам в получении (парсинге) данных с другого сайта.

«Сырой» текст в формате JSON выглядит следующим образом:

{ "data": { "current_condition": [ {"cloudcover": "0", "humidity": "49", "observation_time": "04:57 PM", "precipMM": "0.0", "pressure": "1013", "temp_C": "19", "temp_F": "66", "visibility": "10", "weatherCode": "113", "weatherDesc": [ {"value": "Sunny" } ], "weatherIconUrl": [ {"value": "http:\/\/www.worldweatheronline.com\/images\/wsymbols01_png_64\/wsymbol_0001_sunny.png" } ], "winddir16Point": "N", "winddirDegree": "360", "windspeedKmph": "30", "windspeedMiles": "19" } ], "request": [ {"query": "Moscow, Russia", "type": "City" } ], "weather": [ {"date": "2013-06-21", "precipMM": "0.0", "tempMaxC": "21", "tempMaxF": "71", "tempMinC": "10", "tempMinF": "50", "weatherCode": "113", "weatherDesc": [ {"value": "Sunny" } ], "weatherIconUrl": [ {"value": "http:\/\/www.worldweatheronline.com\/images\/wsymbols01_png_64\/wsymbol_0001_sunny.png" } ], "winddir16Point": "N", "winddirDegree": "358", "winddirection": "N", "windspeedKmph": "24", "windspeedMiles": "15" } ] }}

Чтобы работать с этими данными внутри PHP скрипта, нам потребуется представить текст из формата JSON в виде объектов.В PHP5 (начиная с версии 5.2.0) для этих целей используется функция json_decode:
$tObj = json_decode($t);
/* где $t - переменная с текстом в формате JSON */
var_dump($tObj);
/* с помощью функции var_dump можно вывести содержание переменной $tObj - Вы увидите все объекты и массивы, на которые была разложена первоначальная переменная $t после применение к ней функции json_decode */

Теперь мы можем взять конкретное значение, например температуру в градусах Цельсия:
echo $tObj->data->current_condition[0]->temp_C;

Возможно Вы захотите обойтись без объектов. Можно перевести все JSON данные в ассоциативные массивы. Для этого используется ключ assoc в значении true:
$tObj = json_decode($t,true);
/* тогда температуру в градусах Цельсия мы сможем вывести на так: */
echo $tArr[data][current_condition][0][temp_C];

Опубликовано 21.06.2013 в 21:53 · Автор Вебдизайнеру, сисадмину, вебмастеру · Ссылка
Рубрики: HTML, Javascript, JSON, PHP программирование · Теги: , , , , , , ,