Дополнительно
Можно ли использовать комментарии в JSON?
Можно ли использовать комментарии внутри JSON-файла? Если да, то как?
7055
20
Можно ли использовать комментарии внутри JSON-файла? Если да, то как?
Нет.
Весь JSON должен быть данными, и если вы включите комментарий, то он тоже будет данными.
Можно выделить элемент данных под названием
"_comment"
(или что-то в этом роде), который будет игнорироваться приложениями, использующими данные JSON.Вероятно, будет лучше, если комментарий будет содержаться в процессах, генерирующих/получающих JSON, поскольку предполагается, что они заранее знают, какими будут JSON-данные, или, по крайней мере, их структуру.
Но если вы решили:
Нет, комментарии вида
//...
или/*...*/
не допускаются в JSON. Этот ответ основан на:application/json
для JavaScript Object Notation (JSON)Включите комментарии, если хотите; удалите их с помощью минификатора перед разбором или передачей..
Я только что выпустил JSON.minify(), который удаляет комментарии и пробельные символы из блока JSON и делает из него правильный JSON, который можно разобрать. Таким образом, вы можете использовать его следующим образом:
Когда я выпустил его, я получил огромную обратную реакцию людей, не согласных даже с самой идеей, поэтому я решил, что напишу исчерпывающую статью в блоге о том, почему комментарии имеют смысл в JSON. В нем есть такой примечательный комментарий от создателя JSON:
Надеюсь, это помогло тем, кто не согласен с тем, почему JSON.minify() может быть полезен.
Комментарии были удалены из JSON по дизайну.
Источник: публичное заявление Дугласа Крокфорда на G+
ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: ВАША ГАРАНТИЯ АННУЛИРУЕТСЯ
Как было отмечено, этот хак имеет преимущество выполнения спецификаций. Не все в JSON Парсеры поймет такой формат JSON. Потоковые анализаторы, в частности, будут душить.
Это'Очень интересный любопытство, но вы действительно не должны использовать его Для что-нибыдь на всех. Ниже приводится оригинальный ответ.
Я'вэ нашел небольшой хак, который позволяет размещать комментарии в JSON-файл, который не повлияет на разбор или изменить данные, представляемые в любом случае.
Представляется, что при объявлении литерала объекта можно указать два значения с одинаковым ключом, а последний имеет приоритет. Верите или нет, получается, что в JSON Парсеры работают одинаково. Поэтому мы можем использовать это, чтобы создать комментарии в исходный JSON, который не будет присутствовать в анализируемой представление объекта.
Если мы применяем эту технику, ваша прокомментировал файл JSON может выглядеть так:
Приведенный выше код допустимый JSON. Если вы разбираете его, вы'll получить объект такой:
Что означает, нет и в помине комментариях, и они выиграли'т иметь странные побочные эффекты.
Всего доброго!
JSON не поддерживает комментарии. Он также никогда не был предназначен, чтобы использоваться для файлов конфигурации, где замечания будут нужны.
Hjson-это формат конфигурационного файла для людей. Услуги синтаксис, меньше ошибок, больше комментариев.
См. hjson.org для JavaScript, Java, и Python, и на PHP, ржавчина, Давай, Руби и C# - библиотеках.
Рассмотрите возможность использования в YAML. Это'ы почти надмножество JSON, в (практически все допустимые JSON является допустимым и YAML) и позволяет комментарии.
Нельзя. По крайней мере, таков мой опыт, полученный при беглом взгляде на json.org.
Синтаксис JSON визуализирован на этой странице. Там нет никаких замечаний по поводу комментариев.
Вы должны написать схемы JSON вместо этого. Схемы JSON в настоящее время предлагаемый проект спецификация интернет. Помимо документации, схема может также быть использована для проверки ваших данных JSON.
Пример:
Вы можете предоставить документацию с помощью описание атрибутов схемы.
Если вы используете Джексон в качестве вашего парсера JSON, то это, как вы включите его, чтобы разрешить комментарии:
Затем вы можете иметь такой комментарий:
И вы также можете получить комментарии начинаются с
#
, установив:Но в целом (как ответили раньше) в спецификацию не дает комментарии.
Комментарии не являются официальным стандартом. Хотя некоторые анализаторы поддерживает комментарии в стиле C++. Одно, что я использую JsonCpp. В примерах есть одна:
jsonlint не проверяет это. Так что комментарии конкретного парсера расширение и не стандартный.
Другой парсер JSON5.
Альтернатива в JSON ТОМЛ.
Еще одной альтернативой является jsonc.
Вот что я нашел в документации Google опорного пункта, что позволяет поставить комментарии в JSON:
Если ваш текстовый файл, который является JSON-строку, будет прочитана какая-то программа, насколько трудно будет вырезать либо C или C комментариями в стиле C++, прежде чем использовать его?
Ответ: это будет один лайнер. Если вы сделаете это, то JSON-файлы могут использоваться как файлы конфигурации.
Если вы используете Newtonsoft.Библиотека JSON с ASP.NET читать/десериализации вы можете использовать комментарии в JSON-контента:
и gt; //"имя" и: "в строке"и
или
ЗЫ: однострочные комментарии поддерживаются только с 6+ версии Newtonsoft json-файле.
Дополнительное примечание для людей, которые могут'т думаю, что из коробки: я использовать формат JSON для основных настроек в веб-приложении ASP.NET я сделал. Я читаю файл, преобразовать его в объект параметров библиотеку Newtonsoft и использовать его при необходимости.
Я очень люблю писать отзывы о каждой индивидуальные настройки в самом файле JSON, и я действительно не'т заботиться о целостности формате JSON, как долго, как я использовать ОК с этим.
Я думаю, что это 'проще в использовании/понимать' способом, чем создание отдельного 'настройки.Файл README' файл и объясняя параметры в нем.
Если у вас есть проблемы с такого рода использования; к сожалению, джин выпущен из лампы. Люди найдут другие обычаи в формате JSON, и вы ничего не можете с этим поделать.
Идея JSON заключается в том, чтобы обеспечить простой обмен данными между приложениями. Как правило, они основаны на веб-технологиях, а их языком является JavaScript.
Он не позволяет использовать комментарии как таковые, однако передача комментария в качестве одной из пар имя/значение в данных, безусловно, работает, хотя эти данные, очевидно, должны быть проигнорированы или специально обработаны кодом разбора.
При этом не предполагается, что JSON-файл должен содержать комментарии в традиционном смысле. Это должны быть просто данные.
Более подробную информацию можно найти на сайте JSON.
Я только что столкнулись с этой для файлов конфигурации. Я не'т хотите использовать XML и (вербальном, графическом, некрасиво, тяжело читать), или "Ини" в формате (никакой иерархии, никакого реального стандарта и т. д.). или Java "и" в формате (как свойства .Ини).
JSON может делать все, что они могут сделать, но это гораздо менее многословный и более удобочитаемое и Парсеры легко и повсеместно на многих языках. Это's просто в дереве данных. Но внеполосного комментарии являются необходимостью часто к документу "по умолчанию" по конфигурации и тому подобное. Конфигурации никогда не должны быть "Документы", но деревья сохраненных данных, которые могут быть читабельным при необходимости.
Я думаю, что можно использовать в
"#" и: "в комментарии"
В, и"действует" в формате JSON.JSON не поддерживает комментарии изначально, но вы можете сделать свой собственный декодер или, по крайней мере препроцессор для прокладки вне замечания, что'ы прекрасно (как долго, как вы просто игнорируете замечания и Дон'т использовать их, чтобы направлять, как ваше приложение должно обрабатывать данные JSON).
Сравни: Дуглас Крокфорд, автор в JSON спецификации.
Это зависит от вашего JSON-библиотекой. Json.NET поддерживает JavaScript комментарии в стиле,
/* commment */
.См. другой стек&ампер;усилитель; nbsp;переливом вопрос.
JSON, что делает много смысла для конфигурационных файлов и другими локальными использования, потому что это'ы повсеместно и потому, что это'ы гораздо проще, чем XML.
Если у людей есть веские причины против того, чтобы комментарии в JSON для передачи данных (будь то действующий или нет), то, возможно, JSON можно разделить на два:
В JSON-док позволит коммент, и другие незначительные различия могут существовать, таких как обработка пробелов. Парсеры можно легко конвертировать из одной специализации в другую.
Касаемо замечание, сделанные Дугласа Крокфорда на эти вопросы (на которые ссылается @Артур Чайки)
Мы're говоря о типовой файл конфигурации выпуска (кросс язык/платформа), и он'ы отвечать с помощью JS конкретную программу!
Уверен, что конкретный формат JSON код может быть реализован на любом языке, но стандартизация это так, это будет повсеместно по парсеров на всех языках и платформах, так что люди перестанут тратить свое время не хватало этой функции, потому что у них есть хорошее применение-аргументы за это, глядя в вопрос на интернет-форумах, и люди им говорю, что'ы плохая идея или предполагая, что он's легкий для того чтобы реализовать удаление комментариев из текстовых файлов.
Другой вопрос совместимости. Предположим, у вас есть библиотека или API или какой-либо подсистемы, которая имеет некоторые конфигурации или файлы данных, связанные с ним. И эта подсистема является чтобы быть доступны из разных языков. Тогда вы идете, чтобы сказать людям: кстати Дон'т забудьте убрать комментарии из JSON файлов перед передачей их в парсер!
JSON, который используется для поддержки замечания, но они подвергались насилию и исключены из стандарта.
От создателя формата JSON:
Официальный сайт JSON-это по JSON.org. JSON-это определяется как стандартный ЕАПБ Международного. Всегда есть процесс ходатайство пересмотрели стандарты. Маловероятно, что аннотации будут добавлены в стандарт JSON для нескольким причинам.
JSON по конструкции является легко реверс-инженерии (человеческие разобранный) альтернатива XML. Это упрощенная до такой степени, что аннотации не нужны. Это даже не язык разметки. Цель-это стабильность и interoperablilty.
Всем, кто понимает "есть-А" отношения ориентация объекта может понять любой JSON-структуры - в этом вся суть. Это просто направленный ациклический граф (DAG) с узлом теги (пар ключ/значение), который является почти универсальной структуры данных.
Это требуется только, аннотация может быть "//эти метки-Даг и". Имена ключей могут быть как информативным, так как требуется, что позволяет произвольные семантические арности.
Любая платформа может парсить JSON с помощью всего нескольких строк кода. XML требует сложных библиотек ОО, которые не являются жизнеспособными на многих платформах.
Аннотации просто сделать JSON и сделать менее совместимы. Тут просто нечего добавить, если только то, что вам действительно нужно, это язык разметки (XML), и Дон'т волнует, если ваши сохраненные данные легко разбирается.