Муню

X
//
Главная » All » JSON От теории к практике, что такое JSON и как с ним работать

JSON От теории к практике, что такое JSON и как с ним работать

Время чтение: 7 минут 2018-11-22

Подумала я подумала и решила, поговорим о JSON! Но не на языки великой и всемогущей «Википедии» где статьи пишутся по моему в большинстве своём для сверх разума, а не для людей. Так же не буду парить тебе мозг, на кучу абзацев тем, что JSON  это текстовый формат данных, который явился из JavaScript и прочею скучную хернь. Ну, все это нахер…

Мы пойдём другим путём более интересным и информативным, что бы было ясно, зачем и для чего может пригодится JSON и как с ним работать. Сначала не много болтовни, а после пару практических примеров. Поработаем с какой-нибудь API системой и на практике убедится, что JSON  это очень круто, просто и удобно!

Где и для чего используется JSON

Вы можете использовать JSON везде, где есть необходимость для передачи или получения какой либо информации, между приложениями. Или использовать JSON как бы локально, просто хранить там какие-то настройки своего приложения. Как я это уже делала в соседней статье.

Например: Сервер — Клиент.
Имеем сервер, на сервере стоит база данных которая таит в себе некую информацию. Эту информацию нам нужно получить, например из python приложения, которое вы кодите на своём ПК. Возникает вопрос, как? Вот тут-то JSON  себя и проявляет во всей красе.

Ложем на сервер, скажем PHP скрипт, который мониторит  входящие GET запросы. Из приложухи python  отправляем запрос на сервер, PHP ловит запрос… ломится в базу данных и вытаскивает от туда информацию в виде массива. Далее полученный массив преобразуется в JSON и как обычный текст отправляется в приложения python. А там уже можно декодировать  JSON и продолжить работу с инфой полученной из Базы Данных! Удобно? Круто? Да это б*ять п*здец как ахуе*но!

Например: В пределах одного приложения.
Кодите вы что-то там, такое не большое и простое. Есть необходимость где-то, что-то хранить, некую статистическую информацию, которая никогда не меняется и при этом часто используется в приложении. Использовать БД не вариант, зато  JSON  подойдёт в самый раз. Как такой пример работает в действии, читайте в соседней статье, ссылку кинул выше…

Синтаксис и структура JSON

Прежде чем приступить к разбору JSON надо понять и разобраться в том, как собственно все это дело создаётся и записывается в файл. Синтаксис достаточно простой и не должен вызвать каких-то сложностей. Достаточно запомнить следующие моменты и посмотреть на примеры.

Общие принципы:

  1. Массив всегда заключается в  квадратные скобки [ … ]
  2. Объект нужно заключать в фигурные скобки { … }
  3. Свойства и значения в двойных кавычках разделённые ( : ) «Значение» : «Свойства»

Свойства может быть:

  1. Логическим (true или false).
  2. Числом, записывается без двойных кавычек.
  3. Строкой, записывается в двойные кавычки.
  4. Массивом или объектом.

Когда основные моменты структуры JSON известны, рассмотрим примеры JSON файлов и начнём с самого примитивного и простого примера.

[cc lang=»php»]
{
«Машка» : «28 год»,
«Дашка» : «35 лет»,
«Анжелка» : «30 лет»
}
[/cc]

Если декодировать этот пример из приложения, например из PHP используя функцию json_decode() то вывод будет следующим.

[cc lang=»php»]
stdClass Object
(
[Машка] => 28 год
[Дашка] => 35 лет
[Анжелка] => 30 лет
)
[/cc]

Поскольку JSON пофиг на табуляцию и пробелы, вы можете делать записи как Вам больше нравится, например в одну строку.

[cc lang=»php»]{ «Машка» : «28 год», «Дашка» : «35 лет», «Анжелка» : «30 лет» }[/cc]

Или использовать табуляцию, для полной красоты записи.

[cc lang=»php»]
{
«Машка» : «28 год»,
«Дашка» : «35 лет»,
«Анжелка» : «30 лет»
}
[/cc]

Давай сделаем все не много интереснее и усложним пример. Разделим логически записи для каждой особы, что бы добавить для каждой девушки информацию о ней.

[cc lang=»php»]
{
«Машка» : {
«Возрост» : «33»,
«1 час» : «150$»
},
«Дашка» : {
«Возрост» : «28»,
«1 час» : «200$»
},
«Анжелка» : {
«Возрост» : «28»,
«1 час» : «100$»
}
}
[/cc]

Обратите внимание, что за последним элементом не ставится запитая, как после свойства так и объекта. Посмотрим, какой теперь будет ответ.

[cc lang=»php»]
stdClass Object
(
[Машка] => stdClass Object
(
[Возрост] => 33
[1 час] => 150$
)

[Дашка] => stdClass Object
(
[Возрост] => 28
[1 час] => 200$
)

[Анжелка] => stdClass Object
(
[Возрост] => 28
[1 час] => 100$
)

)
[/cc]

Теперь все куда интереснее. Можно из программы получить нужный объект, например «[Дашка]» и посмотреть что там за час))) Но что если и этого мало. Нужно больше информации и по каждому объекту. Можно присобачить массив. Далее буду использовать примеры JSON в более коротком варианте, либо листинги длинные…

[cc lang=»php»]
{
«Машка» : {
«Возрост» : «33»,
«1 час» : «150$»,

«Доп инфа» : [{
«Рост» : 169,
«Статус» : true
}]

}
}

[/cc]

Ну и стразу можно посмотреть в каком виде прилетит ответ. Кстати, в этом примере [] можно убрать, они тут в принципе и нахер не нужны, но для примера сойдёт.

[cc lang=»php»]
stdClass Object
(
[Машка] => stdClass Object
(
[Возрост] => 33
[1 час] => 150$
[Доп инфа] => Array
(
[0] => stdClass Object
(
[Рост] => 169
[Статус] => 1
)

)

)

)
[/cc]

Думаю понятно, что к чему, и как создаются JSON файлы. Вы сами можете продумывать структуру файлов под свои задачи, главное не нарушать синтаксис, и все будет хорошо.

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

JSON в практических примерах

Первое что в голову приходит, это взять соц.сеть, например API VK и поработать с ним, но нет. Не охота тратить время на создание приложения, подтверждать все по СМС и прочие, и вообще ВК дно…

Не много подумал, если же coinmarketcap.com/api/ с публичным API без всяких ключей и секретов. Круто, будем писать крипто приложение, можно какойнить виджет на сайт замутить))) Напишем прогу которая будет сообщать, какие монеты находятся в ТОП 3, какие цены, и всю херню…

Отправляем запрос на сервер 

Ломимся на coinmarketcap.com и смотрим что там есть. Что бы получить ТОП 3 манеты можно отправить GET запрос по адресу http://api.coinmarketcap.com/v2/ticker/?limit=10 где параметру limit передать нужно количество монет «Значение», нас интересует 3. Пишем код.

[cc lang=»php»]
$ticker = file_get_contents(‘http://api.coinmarketcap.com/v2/ticker/?limit=3’);
$ticker = json_decode($ticker);

echo «\n»;
print_r($ticker);
echo «\n»;
[/cc]

И сразу смотрим ответ, что там пришло.

Видим уже нечто знакомое, это сервер вернул ответ в JSON формате, в котором содержится целая куча всякой разной информации по каждой монете. Теперь осталось разобрать все это дело и забрать только то, что нам нужно. Пишем код дальше.

[cc lang=»php»]
$ticker = file_get_contents(‘http://api.coinmarketcap.com/v2/ticker/?limit=3’);
$ticker = json_decode($ticker);

echo «\n»;

foreach ($ticker->data as $key => $value) {
echo ‘ ============= TOP ‘. $value->rank .’ ==============’ . «\r\n»;
echo ‘ Монета :’ . $value->name . «\r\n»;
echo ‘ Цена :’ . $value->quotes->USD->price . «\r\n»;
echo ‘ Объём :’ . $value->quotes->USD->volume_24h . «\r\n»;
echo ‘ ==================================’ . «\r\n\r\n»;
}
[/cc]

Для примера я взяла только некоторую часть информации, а остальное брать не буду, сами разбирайтесь))) Результат работы этой крутой и полезной программы представлен на этом скнине.

Как вы понимаете я использую консоль, по скольку все это дело на PHP думаю понятно, как просто вывести все это дело на сайте.

На этом работа с JSON на сегодня окончена, мы посмотрели пару примеров, и написали программу, которая прекрасно демонстрирует всю прелесть и удобство JSON.

X