Как добавить комментарии в JSON
Как добавить комментарии в JSON
Как-то по работе пришлось столкнуться с сервисом, в котором использовались файлы конфигурации в формате JSON. Они включали в себя много разных параметров с абсолютно неинформативными названиями ключей. Естественно, первая мысль была прокомментировать каждое поле, так как их приходилось периодически редактировать, а вносить изменения в исходную систему не представлялось возможным.
Но, как оказалось, формат JSON не поддерживает комментарии (Douglas Crockford - создатель JSON, если что), а PHP, придерживаясь стандарта, при попытке декодировать файл с комментариями возвращает пустые данные. Вот для наглядности два простейших примера, как это (не) работает:
Code (PHP) : Убрать нумерацию
- $a='{
- "one":1, /* first number */
- "two":2 /* second number */
- }';
- print_r(json_decode($a));
- // Пусто :(
Code (PHP) : Убрать нумерацию
- $a='{
- "one":1, // first number
- "two":2 // second number
- }';
- print_r(json_decode($a));
- // Пусто :(
На ум приходили даже некрасивые варианты решения проблемы в виде добавления новых полей-комментариев, но очень не хотелось засорять избыточными данными и без того неудобочитаемую конфигурацию. После копания разных зарубежных интернетов, я наткнулся вот на эту статью (оригинальный сайт сдох, ссылка на веб-архив), где моя проблема решалась просто и элегантно. Суть решения сводится к тому, что если при разборе JSON встретятся несколько значений с одинаковыми ключами, то в формируемом объекте используется то значение, которое оказалось последним. Готовый файл JSON стал выглядеть примерно так:
Code (PHP) : Убрать нумерацию
- $a='{
- "one":"first number",
- "one":1,
- "two":"second number",
- "two":2
- }';
- print_r(json_decode($a));
- // stdClass Object
- // (
- // [one] => 1
- // [two] => 2
- // )
Просмотров: 17609 | Комментариев: 6
Метки: JavaScript
Внимание! Статья опубликована больше года назад, информация могла устареть!
Комментарии
Отзывы посетителей сайта о статье
ManHunter
(22.11.2015 в 19:37):
Ссылка на первоисточник указана.
Alex
(22.11.2015 в 19:15):
Это один из ответов отсюда http://stackoverflow.com/quest...493#18018493
Vladimir
(12.10.2015 в 17:05):
Такая https://web.archive.org/web/20...omments.html ссылка красивше выглядит, с оформлением.
ManHunter
(11.10.2015 в 16:52):
Странно, что так быстро сдохло. Еще можно прочитать в кэше: http://hghltd.yandex.net/yandb...5d56&keyno=0
Vladimir
(11.10.2015 в 16:47):
Только ссылка на статью http://fadefade.com/json-comments.html почему-то не открывается.
Добавить комментарий
Заполните форму для добавления комментария
Спасибо за статью!
P.S. Уберите кнопку "Отменить" при добавлении отзыва. Зачем она? ) Я в попыхах на нее кликнул)