Формат JSON
Формат JSON оказался очень хорош для построения API-интерфейсов и удаленный вызовов. Когда-то компания Microsoft пыталась продвинуть свой формат удаленных вызовов - MS SOAP, сделанный на базе XML. Однако JSON оказался куда более приспособленным механизмом для организации удаленного взаимодействия. Компактный, читаемый, удобный в использовании, свободный в выборе схемы данных, поддерживающий различные кодировки - эти и многие другие достоинства присущи формату JSON. Однако не всё так радужно и просто.
Формат JSON родился на стыке двух IT-технологий: web и javascript. Язык JavaScript изначально поддерживал нотацию описания некоторых элементов, очень схожую с JSON, и поэтому использование способа упаковки в этой нотации для передачи данных через интернет стало полностью логическим и ожидаемым событием.
Простой и наглядный вариант файла в JSON-формате ниже:
{
date: '2020-01-01',
data: {
'row1','row2','row3'
},
msg: 'transmission'
}
Как видно из примера - формат данных JSON представляет собой некий ассоциативный массив, данные котором разложены "по ключам". В примере эти ключи - отформатированы по строкам, хотя в оригинальном варианте для автоматизированной обработки это совсем не обязательно: JSON-формат может представлять из себя тот же самый пакет, вытянутый в одну строку.
Поскольку во многих языках программирования представление ассоциативного массива очень и очень схоже с форматом JSON - обычно существуют уже готовые подпрограммы кодирования/декодирования JSON, что, конечно, очень удобно и прозрачно для применения.
Процесс кодирования данных в JSON обычно называется сериализацией, а обратный процесс - десериализацией. Сериализация и десериализация обычно выполняется в один шаг (в одну транзакицию). Многие базы данных умеют "нативно" хранить и передавать данные в формате JSON.
Несморя на такое распространение и поддержку JSON не лишён недостатков:
- Формат JSON в целом очень похож на XML, но содержит гораздо меньшее число средств для анализа, исправления, обработки
- Как и XML в классическом виде формат не поддерживает передачу бинарных данных: они должны быть преобразованы в текстовые, что увеличивает объем файла
- В "чистом" виде формат JSON как и XML - лишён структуры и прикладных стандартов. Каждый прикладной стандарт должен быть описан и согласован отдельно.
- Формат JSON хорош для передачи данных, но не очень хорош для хранения, хотя он и нашёл своё место в NoSQL-базах данных, типа MongoDB
- Большие данные не без труда обрабатываются в формате JSON - хотя иногда это бывает проще XML, а иногда - нет