json комментарии в коде
Могут ли комментарии использоваться в JSON?
Можно ли использовать комментарии в файле JSON? Если да, то как?
ОТВЕТЫ
Ответ 1
JSON все должны быть данными, и если вы включите комментарий, то это тоже будут данные.
У вас может быть выделенный элемент данных, называемый «_comment» (или что-то еще), который будет игнорироваться приложениями, использующими данные JSON.
Вероятно, вам будет лучше иметь комментарий в процессах, которые генерируют/принимают JSON, поскольку они должны знать, какие данные JSON будут заблаговременно или, по крайней мере, его структурой.
Ответ 2
Нет, комментарии в форме //… или /*…*/ не допускаются в JSON. Этот ответ основан на:
Ответ 3
Включить комментарии, если вы выберете; выставьте их с помощью minifier перед синтаксическим разбором или передачей.
Я только что выпустил JSON.minify(), который удаляет комментарии и пробелы из блока JSON и делает это действительный JSON, который может быть проанализирован. Итак, вы можете использовать его как:
Когда я его выпустил, я получил огромную реакцию людей, которые не согласны с этой идеей, поэтому я решил, что напишу полный блог о том, почему комментарии имеют смысл в JSON. Он включает в себя этот замечательный комментарий от создателя JSON:
Надеюсь, что это полезно для тех, кто не согласен с тем, почему JSON.minify() может быть полезным.
Ответ 4
Комментарии были удалены из JSON по дизайну.
Я удалил комментарии от JSON, потому что видел, как люди использовали их для хранения директив синтаксического анализа, что могло бы повредить функциональную совместимость. Я знаю, что отсутствие комментариев заставляет некоторых людей печально, но это не должно.
Предположим, вы используете JSON для хранения файлов конфигурации, которые вы хотели бы аннотировать. Вперед и вставьте все комментарии, которые вам нравятся. Затем проведите его через JSMin, прежде чем передавать его вашему парсера JSON.
Ответ 5
ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: ВАША ГАРАНТИЯ ГОЛОСОВАЛА
Как уже отмечалось, этот хак использует преимущества спецификации. Не все парнеры JSON поймут этот тип JSON. Потоковые анализаторы, в частности, будут дросселировать.
Это интересное любопытство, но вы действительно не должны использовать его для чего-либо вообще. Ниже приведен оригинальный ответ.
Я нашел небольшой взлом, который позволяет размещать комментарии в файле JSON, которые не влияют на синтаксический анализ, или изменять отображаемые данные каким-либо образом.
Похоже, что при объявлении литерала объекта вы можете указать два значения с одним и тем же ключом, а последнее имеет приоритет. Верьте или нет, оказывается, что парсеры JSON работают одинаково. Поэтому мы можем использовать это для создания комментариев в исходном JSON, который не будет присутствовать в представлении анализируемого объекта.
Если применить эту технику, ваш комментарий JSON файла может выглядеть следующим образом:
Вышеприведенный код действительный JSON. Если вы проанализируете его, вы получите такой объект:
Это означает, что комментариев нет, и у них не будет странных побочных эффектов.
Ответ 6
JSON не поддерживает комментарии. Он также никогда не предназначался для использования в файлах конфигурации, где необходимы комментарии.
Смотрите hjson.org для библиотек JavaScript, Java, Python, PHP, Rust, Go, Ruby и С#.
Ответ 7
Рассмотрим использование YAML. Это почти надмножество JSON (фактически все действительные JSON действительны YAML), и он позволяет комментировать.
Ответ 8
Вы не можете. По крайней мере, мой опыт от быстрого взгляда на json.org.
JSON имеет синтаксис, отображаемый на этой странице. Нет комментариев о комментариях.
Ответ 9
Вместо этого вы должны написать схему JSON. Схема JSON в настоящее время является предлагаемой спецификацией проекта Интернета. Помимо документации, схема также может использоваться для проверки ваших данных JSON.
Вы можете предоставить документацию, используя атрибут описание.
Ответ 10
Если вы используете Джексона в качестве парсера JSON, вы можете разрешить комментарии следующим образом:
Тогда вы можете иметь такие комментарии:
Но в целом (как ответили ранее) спецификация не допускает комментариев.
Ответ 11
Комментарии не являются официальным стандартом. Хотя некоторые парсеры поддерживают комментарии в стиле C. Я использую JsonCpp. В примерах есть это:
jsonlint не подтверждает это. Таким образом, комментарии являются специфическим расширением парсера и не являются стандартными.
Ответ 12
Вот что я нашел в документации Google Firebase, которая позволяет добавлять комментарии в JSON:
Ответ 13
Извините, мы не можем использовать комментарии в JSON. См. Диаграмму синтаксиса для JSON на JSON.org.
Я удалил комментарии от JSON, потому что видел, как люди использовали их для хранения директив синтаксического анализа, что могло бы повредить взаимодействие. Я знаю, что отсутствие комментариев заставляет некоторых людей печально, но это не должно.
Предположим, вы используете JSON для хранения файлов конфигурации, которые вы хотели бы комментировать. Вперед и вставьте все комментарии, которые вам нравятся. Затем пропустите его через JSMin, прежде чем передать его вашему парсера JSON.
Ответ 14
Если ваш текстовый файл, который является строкой JSON, будет прочитан какой-либо программой, насколько сложно было бы вырезать комментарии стиля C или С++ до его использования?
Ответ: Это будет один лайнер. Если вы это сделаете, то файлы JSON могут быть использованы в качестве файлов конфигурации.
Ответ 15
Если вы используете библиотеку Newtonsoft.Json с ASP.NET для чтения/десериализации, вы можете использовать комментарии в содержимом JSON:
PS: Одиночные комментарии поддерживаются только в 6+ версиях Newtonsoft Json.
Дополнительное примечание для людей, которые не могут придумать из коробки: Я использую формат JSON для базовых настроек в веб-приложении ASP.NET, которое я сделал. Я прочитал файл, преобразую его в объект настроек с помощью библиотеки Newtonsoft и использую его, когда это необходимо.
Я предпочитаю писать комментарии по каждому отдельному параметру в самом файле JSON, и мне действительно не важно целостность формата JSON, пока библиотека, которую я использую, в порядке с ней.
Я думаю, что это «проще использовать/понимать», чем создавать отдельный файл settings.README и объяснять настройки в нем.
Если у вас есть проблемы с этим видом использования; извините, джина вне лампы. Люди могли бы найти другие способы использования формата JSON, и вы ничего не можете с этим поделать.
Ответ 16
Это действительно не позволяет комментировать как таковой, однако, передавать комментарий, поскольку одна из пар имя/значение в данных, безусловно, будет работать, хотя эти данные, очевидно, должны быть проигнорированы или обработаны специально кодом разбора.
Все, что сказало, это не намерение, что файл JSON должен содержать комментарии в традиционном смысле. Это должны быть только данные.
Посмотрите на сайт JSON для более подробной информации.
Ответ 17
JSON может делать все, что они могут, но это намного менее подробный и более удобный для восприятия язык, и парсеры легко и повсеместно распространены на многих языках. Это просто дерево данных. Но внеполосные комментарии часто требуют документирования конфигураций «по умолчанию» и тому подобного. Конфигурации никогда не должны быть «полными документами», но деревья сохраненных данных, которые могут быть удобочитаемыми по мере необходимости.
Ответ 18
Ответ 19
JSON не поддерживает комментарии изначально, но вы можете сделать свой собственный декодер или, по крайней мере, препроцессор, чтобы исключить комментарии, которые отлично подходят (если вы просто игнорируете комментарии и не используете их для указания того, как ваше приложение должно обрабатывать данные JSON).
У JSON нет комментариев. Кодер JSON НЕ ДОЛЖЕН выводить комментарии. Декодер JSON МОЖЕТ принимать и игнорировать комментарии.
Комментарии никогда не должны использоваться для передачи каких-либо значимых замечаний. То есть для чего JSON.
Ответ 20
JSON имеет большой смысл для конфигурационных файлов и другого локального использования, потому что он вездесущ и потому что он намного проще, чем XML.
Если у людей есть серьезные причины против комментариев в JSON при передаче данных (независимо от того, действительны они или нет), то, возможно, JSON можно разделить на две части:
JSON-DOC позволит комментировать, и могут существовать другие незначительные отличия, такие как обработка пробелов. Парсеры могут легко конвертировать из одной спецификации в другую.
Предположим, вы используете JSON для хранения файлов конфигурации, которые вы хотели бы аннотировать. Вперед и вставьте все комментарии, которые вам нравятся. Затем проведите его через JSMin, прежде чем передавать его вашему парсера JSON.
Мы говорим об общей проблеме с конфигурационным файлом (кросс-язык/платформа), и он отвечает с помощью специальной утилиты JS!
Уверенный, что JSON-специфический minify может быть реализован на любом языке, но стандартизируйте это, чтобы он стал повсеместным для парсеров на всех языках и платформах, поэтому люди перестают тратить свое время на отсутствие функции, потому что у них есть хорошие прецеденты, глядя на проблему на онлайн-форумах и заставляя людей говорить им, что это плохая идея или предлагая легко реализовать снятие комментариев из текстовых файлов.
Ответ 21
Другие инструментальные средства JavaScript могут работать аналогичным образом.
Это может быть полезно при экспериментировании с альтернативными структурами данных (или даже списками данных) перед выбором окончательной опции.
Ответ 22
Если вы используете JSON5, вы можете включать комментарии.
Ответ 23
JSON раньше поддерживал комментарии, но они были оскорблены и удалены из стандарта.
Официальный сайт JSON находится по адресу JSON.org. ECM International определяет JSON как стандарт. Всегда есть ходатайство о пересмотре стандартов. Маловероятно, что аннотации будут добавлены в стандарт JSON по нескольким причинам.
Эта единственная необходимая аннотация может быть «//Это теги DAG». Имена ключей могут быть настолько информативными, насколько это необходимо, что позволяет использовать произвольную семантическую арность.
Любая платформа может анализировать JSON всего за несколько строк кода. XML требует сложных OO-библиотек, которые нежизнеспособны на многих платформах.
Аннотации просто сделают JSON менее совместимым. Просто добавить больше нечего, если только вам действительно не нужен язык разметки (XML), и вас не волнует, легко ли анализируются ваши сохраненные данные.
Ответ 24
JSON не является файловым протоколом. Это свободный от языка формат. Поэтому формат комментария для JSON не определен.
Ответ 25
Вы можете иметь комментарии в JSONP, но не в чистом JSON. Я только что провел час, пытаясь заставить мою программу работать с этим примером из Highcharts: http://www.highcharts.com/samples/data/jsonp.php?filename=aapl-c.json&callback=?
Если вы перейдете по ссылке, вы увидите
Ответ 26
Это вопрос «вы можете. И вот ответ » да».
Нет, вы не должны использовать дублирующих членов объекта для заполнения данных бокового канала в кодировке JSON. (См. «Имена внутри объекта ДОЛЖНЫ быть уникальными» в RFC).
И да, вы могли бы вставить комментарии вокруг JSON, которые вы могли бы разобрать.
Но если вы хотите способ вставки и извлечения произвольных данных бокового канала в действительный JSON, вот ответ. Мы используем уникальное представление данных в кодировке JSON. Это разрешено * во втором разделе RFC в разделе «Пробелы разрешены до или после любого из шести структурных символов».
* RFC утверждает, что «пробелы разрешены до или после любого из шести структурных символов», не указывая явно строки, числа, «ложь», «истина» и «ноль». Это упущение игнорируется во всех реализациях.
Сначала канонизируйте свой JSON, уменьшив его:
Затем закодируйте свой комментарий в двоичном формате:
Затем сверните свой двоичный файл:
Ответ 27
Мы используем strip-json-comments для нашего проекта. Он поддерживает что-то вроде:
Ответ 28
ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: Это глупо
На самом деле есть способ добавлять комментарии и оставаться в пределах спецификации (дополнительный анализатор не требуется). Это не приведет к удобочитаемым комментариям без какого-либо анализа.
Вы можете злоупотреблять следующим:
Хакерским способом вы можете злоупотребить этим, чтобы добавить комментарий. Например: начинайте и заканчивайте свой комментарий вкладкой. Закодируйте комментарий в base3 и используйте другие пробельные символы для их представления. Например.
( hello base three в ASCII) Но вместо 0 используйте пробел, для 1 используйте перевод строки и для 2 используйте возврат каретки.
Это просто оставит вам много нечитаемых пробелов (если вы не создадите плагин IDE для кодирования/декодирования его на лету).
Я никогда не пробовал этого по понятным причинам, и вы не должны.
Ответ 29
Чтобы вырезать элемент JSON на части, я добавляю строки «фиктивный комментарий»:
Ответ 30
Есть хорошее решение (взломать), которое действительно JSON, НО ЭТО НЕ БУДЕТ РАБОТАТЬ ВО ВСЕХ СЛУЧАЯХ (см. комментарии ниже). Просто сделайте один и тот же ключ дважды (или больше). Например: