Если у вас возникли проблемы с добавлением комментариев к файлу 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)
Результат включает в себя наш комментарий:
{'_comment1': 'здесь мой комментарий', 'sport': 'basketball',
'coach': 'Joe Smith', 'wins': 15, 'losses': 5}
Мы даже можем извлечь значение комментария из объекта 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, у вас есть варианты. Хотя эти решения и не идеальны, но по крайней мере дают возможность включить необходимую документацию, когда она вам нужна.
Перевод статьи Amy Haddad: “JSON Comment Example — How to Comment in JSON Files”
Комментарии