Использование комментариев в файлах конфигурации JSON в Sublime Text может привести к невозможности декодирования объектов JSON. Вот моя история.Почему Sublime Text 3 позволяет комментировать файлы конфигурации JSON?
Я недавно установил плагин SublimeREPL в своем Sublime Text 3. Вскоре я обнаружил, что он запускал Python2.7 вместо 3.5 по умолчанию, поэтому я добавил свои собственные файлы конфигурации Python3.5 в соответствии с SublimeREPL Docs, чтобы он поддерживал Python3.5.
Моего Packages/SublimeREPL/config/Python3.5/Main.sublime-menu
JSON файл конфигурация выглядит следующим образом:
[
{
"id": "tools",
"children":
[{
"caption": "SublimeREPL",
"mnemonic": "R",
"id": "SublimeREPL",
"children":
[
{"caption": "Python3.5",
"id": "Python3.5",
"children":[
{"command": "repl_open",
"caption": "Python3.5",
"id": "repl_python3.5",
"mnemonic": "P",
"args": {
"type": "subprocess",
"encoding": "utf8",
"cmd": ["python3", "-i", "-u"],
"cwd": "$file_path",
"syntax": "Packages/Python/Python.tmLanguage",
"external_id": "python3",
"extend_env": {"PYTHONIOENCODING": "utf-8"}
}
},
// run files
{"command": "repl_open",
"caption": "Python3.5 - RUN current file",
"id": "repl_python3.5_run",
"mnemonic": "R",
"args": {
"type": "subprocess",
"encoding": "utf8",
"cmd": ["python3", "-u", "$file_basename"],
"cwd": "$file_path",
"syntax": "Packages/Python/Python.tmLanguage",
"external_id": "python3",
"extend_env": {"PYTHONIOENCODING": "utf-8"}
}
}
]}
]
}]
}]
Примечания есть комментарий // запускать файлы в этом файле. Эта конфигурация отлично работает из инструментов меню -> SublimeREPL-> Python3.5. Однако, когда я попытался связать клавишу F5 с repl_python3.5_run, чтобы иметь легкий доступ к 3,5, следующее исключение было брошено в консоли:
Traceback (most recent call last):
File "./python3.3/json/decoder.py", line 367, in raw_decode
StopIteration
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/opt/sublime_text/sublime_plugin.py", line 551, in run_
return self.run(**args)
File "/home/ubuntu/.config/sublime-text-3/Packages/SublimeREPL/run_existing_command.py", line 32, in run
json_cmd = self._find_cmd(id, path)
File "/home/ubuntu/.config/sublime-text-3/Packages/SublimeREPL/run_existing_command.py", line 41, in _find_cmd
return self._find_cmd_in_file(id, file)
File "/home/ubuntu/.config/sublime-text-3/Packages/SublimeREPL/run_existing_command.py", line 53, in _find_cmd_in_file
data = json.loads(bytes)
File "./python3.3/json/__init__.py", line 316, in loads
File "./python3.3/json/decoder.py", line 351, in decode
File "./python3.3/json/decoder.py", line 369, in raw_decode
ValueError: No JSON object could be decoded
После того как я удалил // запускать файлы комментарий. Ключ F5 работает отлично. Это именно комментарий, который вызывает проблему. Sublime Text использует JSON в качестве конфигурационных файлов, множество конфигурационных файлов снабжаются // комментариями стиля. Как мы знаем, комментарии удаляются из JSON по дизайну.
Тогда как может возвышенный текст разрешить комментарии в конфигурационных файлах, использует ли он трубку? Если это так, как может сбой моего ключа?
** P АРЕНДА НЕ ПОЧЕМУ ТЕКСТ КАК ИЗОБРАЖЕНИЯ **. Скопируйте и вставьте текст в свой вопрос. Изображения не доступны для поиска и не могут быть интерпретированы экранными программами для лиц с нарушениями зрения. Используйте ссылку [edit], чтобы изменить свой вопрос. См. [This] (http://meta.stackoverflow.com/a/285557/1426065) для получения дополнительной информации. – MattDMo
Вы правы. Я уже исправил свою ошибку. Спасибо, что указали это. @ MattDMo – Naomi