#json #bash
#json #bash
Вопрос:
Я возился с файлами, которых не должно было быть, чтобы отредактировать мою оболочку bash, чтобы она выглядела красиво. Я загрузил bash_it и следовал этому руководству, чтобы сделать это ( https://medium.freecodecamp.org/jazz-up-your-bash-terminal-a-step-by-step-guide-with-pictures-80267554cb22). Однако теперь все, что я вижу в своей оболочке, это в каждой строке:
Expecting ',' delimiter: line 39 column 2 (char 2196)
Expecting ',' delimiter: line 39 column 2 (char 2196)
Итак, затем я иду и добавляю запятую в конец файла, который, как я думаю, является источником проблемы ( default.json
), которая выглядит следующим образом:
{
"name": "Default color scheme for shell prompts",
"groups": {
"hostname": { "fg": "brightyellow", "bg": "mediumorange", "attrs": [] },
"environment": { "fg": "white", "bg": "darkestgreen", "attrs": [] },
"mode": { "fg": "darkestgreen", "bg": "brightgreen", "attrs": ["bold"] },
"attached_clients": { "fg": "white", "bg": "darkestgreen", "attrs": [] }
},
"mode_translations": {
"vicmd": {
"groups": {
"hostname": { "fg": "brightyellow", "bg": "mediumorange", "attrs": [] },
"environment": { "fg": "white", "bg": "darkestgreen", "attrs": [] },
"mode": { "fg": "darkestgreen", "bg": "brightgreen", "attrs": ["bold"] },
"attached_clients": { "fg": "white", "bg": "darkestgreen", "attrs": [] },
"gitstatus": { "fg": "gray8", "bg": "gray2", "attrs": [] },
"gitstatus_branch": { "fg": "gray8", "bg": "gray2", "attrs": [] },
"gitstatus_branch_clean": { "fg": "green", "bg": "gray2", "attrs": [] },
"gitstatus_branch_dirty": { "fg": "gray8", "bg": "gray2", "attrs": [] },
"gitstatus_branch_detached": { "fg": "mediumpurple", "bg": "gray2", "attrs": [] },
"gitstatus_tag": { "fg": "darkcyan", "bg": "gray2", "attrs": [] },
"gitstatus_behind": { "fg": "gray10", "bg": "gray2", "attrs": [] },
"gitstatus_ahead": { "fg": "gray10", "bg": "gray2", "attrs": [] },
"gitstatus_staged": { "fg": "green", "bg": "gray2", "attrs": [] },
"gitstatus_unmerged": { "fg": "brightred", "bg": "gray2", "attrs": [] },
"gitstatus_changed": { "fg": "mediumorange", "bg": "gray2", "attrs": [] },
"gitstatus_untracked": { "fg": "brightestorange", "bg": "gray2", "attrs": [] },
"gitstatus_stashed": { "fg": "darkblue", "bg": "gray2", "attrs": [] },
"gitstatus:divider": { "fg": "gray8", "bg": "gray2", "attrs": [] }
},
"mode_translations": {
"vicmd": {
"groups": {
"mode": {"fg": "darkestcyan", "bg": "white", "attrs": ["bold"]}
}
}
}
},
И затем я получаю другую ошибку, которая появляется в терминале
Expecting property name enclosed in double quotes: line 39 column 3 (char 2197)
Expecting property name enclosed in double quotes: line 39 column 3 (char 2197)
Поэтому я добавляю двойные кавычки, и он ожидает еще одну запятую и больше кавычек и т.д…
В идеале я просто хотел бы иметь возможность снова использовать свой терминал без этих ошибок json в каждой строке.
Комментарии:
1. Существует множество онлайн-валидаторов json. Вы пытались использовать какой-либо из них?
Ответ №1:
действительно, есть много онлайн-валидаторов JSON, таких как этот:https://jsoncompare.com /#!/простой/
Тем не менее, я использую свой собственный автономный инструмент unix jtc
, используя опцию отладки ( -d
), легко определить местоположение в JSON, где проблема (таким образом, этот инструмент также можно использовать в качестве средства проверки JSON). В вашем случае добавление запятой в конце JSON неверно, так как обычно любой вложенный JSON должен быть закрыт либо с помощью }
, либо с помощью ]
. Итак, как только конечная запятая удалена, инструмент выдает этот вывод:
bash $ <default.json jtc -d
.read_inputs(), reading json from <stdin>
.parsejson(), exception locus: ... }| }| }|}|
.location_(), exception spot: --------------------------------->| (offset: 2421)
jtc json exception: unexpected_end_of_string
bash $
unexpected_end_of_string
в конце JSON может означать только одно: отсутствуют скобки ]
или }
. В вашем JSON нет отсутствующих незакрытых массивов (все они закрыты []
), таким образом, пропущены только закрывающие фигурные скобки }
.
Добавление одного за другим в конце, пока JSON не начнет разбор (всего добавлено 2):
bash $ <default.json jtc -d
.read_inputs(), reading json from <stdin>
.write_json(), outputting json to <stdout>
{
"groups": {
"attached_clients": {
"attrs": [],
"bg": "darkestgreen",
"fg": "white"
},
"environment": {
"attrs": [],
"bg": "darkestgreen",
"fg": "white"
},
"hostname": {
...