TGViewer
analyst_exe | инженерное мышление в IT analyst_exe | инженерное мышление в IT @analyst_exe · 508 subscribers
Post #663 233
JSON никто не придумывал. Его, по словам автора, просто нашли — лежал внутри JavaScript и ждал.

Звучит как понты, но это буквально так. Дуглас Крокфорд в районе 2001-го (компания State Software) не сочинял новый формат. Он взял синтаксис, которым в JS уже описывали объект — фигурные скобки, ключ-значение — и сказал: вот этим и будем обмениваться данными. Зарегистрировал json.org, описал на одной страничке. Всё.

А теперь зачем это вообще понадобилось.

Тогда правил XML

Начало нулевых. Данные между браузером и сервером гоняли в XML. Штука мощная, спору нет: схемы, валидация, namespace'ы. Но для «отдай мне юзера с именем и почтой» это как забивать гвоздь отбойным молотком.

Открывающий тег, закрывающий тег — по два на каждое поле. Половина байтов это </вот\_это\_вот>. Чтобы прочитать — тащи парсер, ковыряй DOM, доставай значения по узлам, не забудь про схему и namespace. Возни много, данных мало. Перебор для простого обмена.

Перелом — AJAX

2005-й, Джесси Джеймс Гарретт вводит слово AJAX. Идея: браузер дёргает сервер в фоне, без перезагрузки страницы. Тогда это была магия — карты, которые тянутся мышкой, подсказки в поиске на лету.

И вот тут XML посыпался. Браузер на JavaScript, сервер ему шлёт XML — а чтобы разобрать, опять DOM, опять руками.

А JSON? Он же синтаксис самого JavaScript. Пришёл ответ — и на выходе сразу готовый объект, разбирать нечего. Родное. (Поначалу его вообще скармливали eval() — да, исполняли как код, дыра жуткая; потом одумались и сделали безопасный JSON.parse().)

С этого момента всё.

Чем взял

Горстка типов, и никаких церемоний. Объект, массив, строка, число, true/false/null. Шесть штук. Человек читает глазами без тулзы, машина парсит влёт. Учить нечего — открыл и понял.

Дальше его просто причесали комитеты: RFC 4627 → ECMA-404 → RFC 8259 / STD 90 (2017, финал). Скучная часть, но без неё формат не стал бы стандартом.

Кстати, забавное. Крокфорд впихнул в лицензию пункт: «The Software shall be used for Good, not Evil» — софт использовать во благо, не во зло. И понеслось: юристы крупных контор хватались за голову, а одна на полном серьёзе попросила письменное разрешение «использовать во зло». Он разрешил.

Но не всё гладко

JSON выехал на минимализме — и тем же местом огребает. Чего в нём нет:

— Комментарии. Никаких. Хочешь пометку в конфиге — а некуда.
— Даты и бинарь. Нет таких типов. Дата едет строкой, и каждый парсит как хочет.
— И главная подстава — числа. Сам стандарт точность не ограничивает, но почти все реализации (привет, JavaScript) суют число в float64. И целый id больше 2^53 (\~9 квадриллионов — туда дорастают банковские счётчики, телеком, 64-битные Snowflake ID) теряет точность молча. Послал 1234567890123456789 — на той стороне прилетело что-то рядом, и никто не ругнулся. Кто-то умеет тянуть аккуратно (BigInt в JS, UseNumber в Go), но самый надёжный межъязыковой костыль — гнать большой id строкой, в кавычках. Кто не знал — ловил баг, который «на моих данных не воспроизводится».

Схема? JSON Schema — вообще сторонняя спека, приехала позже и сбоку, в стандарт не входит. Запятую в конце списка (trailing comma) тоже нельзя — прод падал и не на таком.

Итого

JSON победил XML не потому, что мощнее. Наоборот — он слабее. XML мог всё, но за всё драл. JSON умел мало, зато не выносил мозг.

Короче, выехал не самый мощный, а самый ненапряжный. Как-то так))

Мне тут понравилось копать-ковырять в историю инструментов. Ну, чтобы получше понимать, почему так. Ну кто вам об этом расскажет, если не я?

❤️ - если продолжать исторические справки

@analyst_exe
  • ❤ 11
More from @analyst_exe
  1. Sep 21, 2026Ну это не дело, сами из резюме вытащить не могут? @analyst_exe
  2. Sep 20, 202614 моделей рисуют BPMN. Кто рабочая лошадь, а кто заставит зайца ждать? Взял историю про П…
  3. Sep 20, 2026Есть идеи, чем я таким сижу занимаюсь? Пишите варианты в комментариях) @analyst_exe
  4. Sep 19, 2026В субботу отдыхаем честно украденным мемом @analyst_exe
  5. Sep 16, 2026Господа, расскажите в комментариях, что происходит с рынком труда нынче? Кто смотрел? Кто…
  6. Sep 14, 2026Все ясно, вам нужны только мемы Их есть у меня @analyst_exe
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →