Как писать коментарии в json-конфиге?
Есть конфиг файл в формате json . Нужно закоментировать одну строку и попробовать другое значение. Ну и сопроводиловку для будущего себя накатать. Какой знак за это отвечает?
Отслеживать
задан 13 сен 2016 в 6:19
don Rumata don Rumata
4,195 3 3 золотых знака 19 19 серебряных знаков 41 41 бронзовый знак
Сам по себе json может содержать коментарии(только никто так не делает) зависит от парсера. Лично сталкивался с json содержащим // или /**/ коментарии.
18 окт 2018 в 13:18
Я не про костыли. Я именно про общепринятый стандарт. Понятно, что можно даже синтаксис полностью переделать с парсером вместе. И всем говорить, что это немного другой json.
18 окт 2018 в 20:55
В общепринятом стандарте json не предусмотрены комментарии. Однако даже .NET Newtonsoft.Json спокойно их проглатывает — <"key":"value" // comment>не вызовет ошибки парсинга. правда тут стоит понимать что другой парсер может оказаться менее лояльным."key":"value">
Как комментировать файлы JSON
Если у вас возникли проблемы с добавлением комментариев к файлу JSON, на то есть веская причина: JSON не поддерживает комментарии.
“Я убрал комментарии из JSON, потому что увидел, что люди используют их для парсинга директив — практика, которая разрушила бы совместимость”, — пишет Дуглас Крокфорд, популяризировавший текстовый формат данных.
Однако есть и обходной путь. И эта статья посвящена именно ему.
Добавляйте данные в виде комментариев
Чтобы обойти проблему комментариев, добавьте в свой файл JSON данные, которые функционируют как комментарии.
Давайте рассмотрим это на примере. Начнем с файла JSON, в котором содержится следующая информация:
"sport": "basketball",
"coach": "Joe Smith",
"wins": 15,
"losses": 5
>
Теперь давайте добавим еще одну пару ключ-значение, чтобы она служила для нас комментарием — как вы можете видеть в первой строке кода ниже:
"_comment1": "здесь мой комментарий",
"sport": "basketball",
"coach": "Joe Smith",
"wins": 15,
"losses": 5
>
Вот еще один пример. На этот раз мы используем два подчеркивания — в начале и в конце ключа:
"__comment2__": "здесь другой комментарий",
Подчеркивание помогает отличить комментарий от остальных данных в файле.
Небольшое предостережение
Есть одна важная деталь, которую нужно иметь в виду.
Комментарии, которые мы добавили в файл JSON, включены в объект JSON. Другими словами, комментарии рассматриваются как данные.
Вот что имеется в виду.
"_comment1": "здесь мой комментарий",
"sport": "basketball",
"coach": "Joe Smith",
"wins": 15,
"losses": 5
>
Теперь мы собираемся прочитать эти данные из файла read_comments.py :
import json
with open("data.json", mode="r") as j_object:
data = json.load(j_object)
print(data)
Результат включает в себя наш комментарий:
Мы даже можем извлечь значение комментария из объекта JSON: this is my comment :
import json
with open("data.json", mode="r") as j_object:
data = json.load(j_object)
print(data["_comment1"])
Имейте в виду, что такой комментарий является комментарием только в глазах разработчика, а не компьютера.
Другой тип комментария
Эта практика комментирования JSON отличается от комментариев в языках программирования, таких как Python, которые обычно игнорируются при запуске программы.
# Здесь мой комментарий
word = "house"
for letter in word:
print(letter)
Когда мы запускаем программу Python, приведенную выше, мы получаем буквы в слове “house”. Но мы не видим комментария. Он был проигнорирован.
Варианты комментирования
JSMin — это еще один вариант, стоящий рассмотрения.
Это инструмент, который удаляет лишние пробелы и комментарии из файлов JavaScript. Но он также работает и с файлами JSON. JSMin удаляет комментарии из файлов JSON до того, как они будут обработаны.
Таким образом, когда речь заходит о комментировании в файлах JSON, у вас есть варианты. Хотя эти решения и не идеальны, но по крайней мере дают возможность включить необходимую документацию, когда она вам нужна.
- 3 фундаментальных постулата JS, приближающих вас к Pro-статусу
- Добро пожаловать в ад…зависимостей JavaScript
- Движок JavaScript: что внутри
Как комментировать в json
Как писать комментарии в JSON-файле? Некоторых аналитиков этот вопрос приводит в замешательство, и они либо признаются сразу, что не знают/не помнят, либо начинают что-то сочинять на ходу 🙂 Кто-то при этом может вспомнить про экранирование спец-символов.
На самом деле формат JSON не предусматривает добавление комментариев. JSON — это только данные.
Для чего нужны комментарии? — Чтобы объяснить вещи, которые могут быть не очевидными.
Если вам очень хочется добавить некий комментарий в JSON, то в этом случае нужно добавить дополнительные данные в одном из поддерживаемых форматов. Например, добавить в структуру JSON дополнительный параметр, назвав его «_comment» (или как-то иначе), а значение этого параметра как раз и будет текстом комментария:
Соответственно, все приложения, использующим данные этого JSON, должны игнорировать этот параметр.
Минус данного подхода: не возможно написать комментарий для определенных параметров структуры JSON, только некий общий.
Использование комментариев в JSON с примерами 2 мин для чтения
О дин из наиболее часто задаваемых вопросов, связанных с JSON: «Можем ли мы создавать или использовать комментарии в формате данных JSON?». Ответ на этот вопрос немного сложнее, когда мы можем, да или нет. Мы ответим, можем ли мы создавать и использовать комментарии в JSON в этой статье со всех точек зрения.
Формально мы не можем создать комментарий в JSON
Начнем с плохих новостей. Официальное определение или стандарт JSON не поддерживает комментарии. В качестве простого формата данных стандартный комитет, хотя это не является необходимым для создания комментариев в формате данных.
Комментарии в JSON5
JSON5 — это неофициальный стандарт, созданный разработчиками и опубликованный в GitHub. с помощью JSON5 создаются некоторые расширения стандарта JSON. Одним из них являются комментарии, которые поддерживаются JSON5. Согласно JSON5 допускаются одно- и многострочные комментарии. Вот пример комментариев JSON5. Мы видим, что //это используется для создания однострочного комментария, где /* и */используется для создания многострочного комментария.
< //Используется имя. Укажите имя пользователя "firstName":"AndreyEx", "lastName":"Destroyer", "age":21, "birth":"1998-05-22", /* Адресный блок предоставляет полный адрес пользователя */ "address":< "streetAddress":"Krasnayа Street", "city":"Krasnodar", "state":"Krasnodar Kray", "postalCode":350035 >, "phoneNumbers":[ < "type":"home", "number":"8 999 99-99-99" >, < "type":"fax", "number":"8 888 88-88-88" >] >
Использование элемента данных _comment для комментариев
Поскольку JSON официально не поддерживает комментарии, но разработчики очень нуждаются в комментариях, они создают альтернативные способы создания комментариев. Одним из них является использование элемента данных _comment внутри данных JSON, как показано ниже.
< "_comment":"Используется имя. Укажите имя пользователя", "firstName":"AndreyEx", "lastName":"Destroyer", "age":21, "birth":"1998-05-22", "_comment":"Адресный блок предоставляет полный адрес пользователя", "address":< "streetAddress":"Krasnayа Street", "city":"Krasnodar", "state":"Krasnodar Kray", "postalCode":350035 >, "phoneNumbers":[ < "type":"home", "number":"8 999 99-99-99" >, < "type":"fax", "number":"8 888-88-88" >] >
Использование комментария. Элемент данных для комментария
Мы также можем использовать непосредственно comment как элемент данных, который очень похож на _comment.
< "comment":"Используется имя. Укажите имя пользователя", "firstName":"AndreyEx", "lastName":"Destroyer", "age":21, "birth":"1998-05-22", "comment":"Адресный блок предоставляет полный адрес пользователя", "address":< "streetAddress":"Krasnayа Street", "city":"Krasnodar", "state":"Krasnodar Kray", "postalCode":350035 >, "phoneNumbers":[ < "type":"home", "number":"8 999 99-99-99" >, < "type":"fax", "number":"8 888-88-88" >] >/
Использование / * */ и // C и C ++ как комментарии
Даже JSON5 поддерживает однострочные // комментарии, а /* */ — многострочные комментарии обычные JSON не поддерживают. Мы можем использовать их, как показано ниже.
< // Используется имя. Укажите имя пользователя "firstName":"AndreyEx", "lastName":"Destroyer", "age":21, "birth":"1998-05-22", // Адресный блок предоставляет полный адрес пользователя "address":< "streetAddress":"Krasnayа Street", "city":"Krasnodar", "state":"Krasnodar Kray", "postalCode":350035 >, "phoneNumbers":[ < "type":"home", "number":"8 999 99-99-99" >, < "type":"fax", "number":"8 888-88-88" >] >
Читать Что такое целевая страница и как ее создать в 2020 году. Часть 3
Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.