Формат JSON
JSON — текстовый формат обмена данными, описанный стандартами ECMA-404 и RFC 8259. Значений в нём шесть видов: объект, массив, строка, число, логическое значение и пустое null. Ни дат, ни комментариев, ни висячих запятых формат не знает — всё это добавляют надстройки поверх него. Оформления в JSON нет вовсе, поэтому напечатать его можно только после того, как вы решили, как данные должны выглядеть.
Коротко о цифрах
- Стандарты
- ECMA-404 и RFC 8259
- Типов значений
- шесть: объект, массив, строка, число, логическое, null
- Кодировка
- UTF-8 как основная по стандарту обмена
- Предел точности целых
- 9 007 199 254 740 991
- Чего в формате нет
- комментариев, дат и висячих запятых
- Наши маршруты
- ни один не принимает .json — отказ по расширению
Шесть типов и ничего сверх
Дат в JSON нет: то, что выглядит как дата, — обычная строка, и обе стороны просто договорились о её виде, чаще всего по международному стандарту записи. Комментариев тоже нет, поэтому пояснение внутри файла обычно кладут отдельным полем с говорящим именем.
Числа — отдельная ловушка. Разбор почти всегда идёт в двойную точность, а она точно хранит целые до 9 007 199 254 740 991. Идентификатор длиннее этого молча теряет последние разряды: два разных объекта в вашей выгрузке становятся одним и тем же номером. Именно поэтому серьёзные интерфейсы отдают длинные идентификаторы строками, а не числами.
Почему файл «сломан»
- Запятая после последнего элемента списка — самая частая причина отказа разбора.
- Одинарные кавычки вместо двойных: в JSON допустимы только двойные.
- Комментарии, скопированные из примера кода: формат их не предусматривает.
- Метка порядка байтов в начале файла после сохранения из редактора Windows.
- Значения вроде бесконечности и «не число», которые допускает язык, но не допускает формат.
- Файл, где каждая строка — отдельный объект: это построчный формат выгрузки, и целиком он как JSON не читается.
Как получить PDF
- Определитесь с видом: таблица со столбцами, карточки записей или простой отступной дамп для чтения.
- Превратите данные в HTML: скриптом, шаблоном или импортом в редактор таблиц с последующим сохранением как веб-страницы.
- Проверьте, что стили лежат внутри файла, а не рядом с ним.
- Загрузите .html к нам и получите PDF на A4 с полями 0,4 дюйма.
- Если готовый отчёт нужно приложить к другому документу, сшейте оба файла объединением PDF.
Чего у нас нет
- Маршрута для .json нет: файл отклоняется по расширению, до конвейера он не доходит.
- Переименование в .html даст сплошную стену текста — фигурные скобки не являются тегами и структуры не создадут.
- Мы не проверяем данные на соответствие схеме и не чиним синтаксис: это работа редактора или линтера.
- Красивый отступной вид тоже делаем не мы — форматирование включается в редакторе одним действием.
Частые вопросы
Чем открыть JSON?
Любым текстовым редактором: формат текстовый и читается глазами. Редактор с подсветкой ещё и расставит отступы, а браузеры показывают такой файл сворачиваемым деревом вместо одной длинной строки.
Почему выгрузка не читается, хотя выглядит правильной?
Чаще всего мешает невидимое: метка порядка байтов в начале файла, лишняя запятая перед закрывающей скобкой или одинарные кавычки. Разбор останавливается на первой ошибке и указывает позицию символа.
Почему длинный идентификатор изменился после обработки?
Число потеряло точность: целые сверх девяти с лишним квадриллионов не помещаются в двойную точность без округления. Передавайте такие значения строками, тогда ни один разбор их не тронет.
Можно ли приложить JSON к договору в виде PDF?
Да, но через промежуточный шаг. Отрисуйте данные в HTML, напечатайте эту разметку нашим конвертером, а полученные страницы присоедините к основному документу объединением файлов.