Работа с форматом JSON

JSON (англ. JavaScript Object Notation, обычно произносится как /ˈdʒeɪsən/ JAY-sən / Джейсо́н) — текстовый формат обмена данными.

Процесс обмена происходит по схеме: есть приложение А, которое хочет переслать сообщение приложению B, при этом язык приложений и компьютеры на которых они запущены не играют роли.

  1. Приложение А преобразует данные (обычные переменные/структуры/объекты/…) в текст соответствующий правилам формата json. Как именно происходит преобразование роли не играет. Этот процесс называется сериализацией.
  2. Полученный текст передаётся приложению B(через http/сохранением в файл/через сокет/…). При этом у файла не обязательно должно быть расширение .json, т.к. внутри всё равно обычный текст.
  3. Приложение B получает данные в виде текста. В принципе с этими данными можно работать в виде обычного текста. Но т.к. это довольно не удобно обычно используют различные библиотеки.
  4. JSON в виде текста передаются библиотеке которая их парсит и преобразовывает в своё внутреннее представление (каждая библиотека по своему). Иногда по данным создаётся изначальная переменная/объект/… данный процесс называется десериализацией.
  5. Работа с распарсенными данными происходит через интерфейс предоставляемый библиотекой.
  6. В случае, если данные нужно будет сохранить или передать обратно информация преобразуется обратно в текст. Данное действие называется дамп.

Для ознакомления с форматом json:

  • Структура json сущностей: https://www.json.org/json-ru.html
    Внизу страницы есть список языков и библиотек для работы с json.
  • Видео пояснение к предыдущей ссылке: https://youtu.be/Wqmcj1IhDFM
    В видео есть оговорка. Корневой сущностью может быть не только объект, но и просто массив.
  • Json валидатор: https://codebeautify.org/jsonvalidator
    Входит в состав довольно большого числа инструментов https://codebeautify.org/

С++:

Для задания используйте библиотеку JSON for Modern C++: https://github.com/nlohmann/json. Для этого скачайте и подключите к проекту заголовочный файл json.hpp расположенный в репозитории в каталоге single_include.

Чтение/запись из/в файла показаны в разделе To/from streams (e.g. files, string streams) во втором блоке кода. Но дополнительно нужно подключить библиотеку для работы с файлами #include <fstream>.

Несколько примеров от автора библиотеки: итерирование по массиву и объекту, создание и заполнение массива. При работе с массивами можно использовать push_back, size и остальные методы стандартных контейнеров std.

Python:

Для задания используйте стандартный модуль json. Описание модуля на английском языке приведено в документации.

Про базовые способы работы с модулем json на руссом языке можно почитать тут: https://python-scripts.com/json.

Видео пример работы с модулем json: https://youtu.be/rIhygmw9HZM и https://youtu.be/Wt4WAcqEje8