Комментарии, вероятно, являются одним из самых недооцененных аспектов кодирования. Когда вы молниеносно печатаете, слушая саундтрек из социальной сети и стараясь произвести впечатление Джонни Ли Миллера, вы никогда не захотите останавливаться, чтобы сделать какие-нибудь жалкие комментарии в своем коде, но они могут быть вам спасением. Сколько раз вы называли переменную youKnoWhatThisIs только для того, чтобы посмотреть на нее неделю спустя, совершенно запутавшись в ее назначении?

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

Я впервые обнаружил, что JSON не разрешает комментарии, когда я пытался отредактировать файл конфигурации для мода Stardew Valley, и Атом кричал на меня большими красными буквами, чтобы я прекратил делать то, что я делал.

Официальное слово создателя JSON Дугласа Крокфорда:

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

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

Какое обходное решение?

Если Интернет чему-то нас научил, так это тому, что программисты всегда находят способ. Даже после удаления комментариев все еще есть способы оставлять комментарии (и даже способы использовать некоторые из этих директив синтаксического анализа) в JSON.

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

В этом методе используется начальный _, чтобы указать, что следующая строка данных должна игнорироваться запускающим ее анализатором:

“_comment” : “Look at me, I’m a comment that will be ignored by the parser”,

Аналогичный метод используется ниже, но вместо него используется обычный JavaScript //.

"//" : "a detailed explanation of what is about to occur in my code",

Или вы всегда можете последовать совету самого Дугласа Крокфорда и оставить свои комментарии, если вы запускаете свой файл JSON через JSON Minify, прежде чем отправлять его через свой синтаксический анализатор.

Все это несовершенные решения спорной проблемы (статья HackerNews из исходного объявления особенно интересна для чтения, поскольку исходное объявление Крокфорда о Google+ потеряно для эфира), но, тем не менее, они являются решениями. Так что продолжайте с новыми знаниями и комментируйте в JSON сколько душе угодно.