Emacs 模式或验证工具可帮助检测 JSON 文件中的错误?
Emacs mode or validation tool to help detect errors in JSON files?
我想在 git 推送之前确保我的 JSON 文件格式正确。我使用 emacs;有没有一种模式可以帮助检测语法错误?否则,是否有一些 parser/validator 我可以在更改的 .json
文件上设置为 运行?
语法错误示例:对象最后一个值后的逗号。
谢谢!
编辑:出于安全原因,我不会将 JSON 复制并粘贴到第三方 JSON 验证网站。
尝试flymake-json - based on JSONLint, you may find also useful json-reformat。
这是我最终使用的解决方案。
只需将以下代码粘贴到您目录的 .git/hooks/pre-commit
文件中。然后,chmod +x
文件。
#!/bin/sh
files=$(git diff --cached --name-only --diff-filter=ACM | grep ".json$")
if [ "$files" = "" ]; then
exit 0
fi
pass=true
echo "\nValidating Modified JSON Files:\n"
for file in ${files}; do
result=$(jslint ${file} | grep "${file} is OK")
if [ "$result" != "" ]; then
echo "\t3[32mJSLint Passed: ${file}3[0m"
else
echo "\t3[31mJSLint Failed: ${file}3[0m"
pass=false
fi
done
echo "\nJSON Validation Complete\n"
if ! $pass; then
echo "3[41mCOMMIT FAILED:3[0m Your commit contains JSON files do not pass . Please fix the JSLint errors and try again.\n"
exit 1
else
echo "3[42mCOMMIT SUCCEEDED3[0m\n"
fi
Flymake 现在似乎已经过时了。你可以试试 flycheck + jsonlint。
我做了什么让它在 json 模式下工作(emacs 25.1.50,ubuntu 14.04):
- 安装 jsonlint:
sudo npm install jsonlint -g
- 从
flycheck-disabled-checkers
emacs 变量列表中删除 json-jsonlist
值。
- 向 emacs 配置添加类似的内容:
(require 'flycheck)
(flycheck-add-mode 'json-jsonlint 'json-mode)
(add-hook 'json-mode-hook 'flycheck-mode)
这对我有用:json 中的错误突出显示并由
M-g M-n
键。当然,在巨大的 flycheck documentation.
中可以描述其他 better/simpler 方式
Go 的 JSON 解析器还有一个纯 elisp 端口,它将突出显示第一个语法错误:https://github.com/psanford/json-error-mode
我想在 git 推送之前确保我的 JSON 文件格式正确。我使用 emacs;有没有一种模式可以帮助检测语法错误?否则,是否有一些 parser/validator 我可以在更改的 .json
文件上设置为 运行?
语法错误示例:对象最后一个值后的逗号。
谢谢!
编辑:出于安全原因,我不会将 JSON 复制并粘贴到第三方 JSON 验证网站。
尝试flymake-json - based on JSONLint, you may find also useful json-reformat。
这是我最终使用的解决方案。
只需将以下代码粘贴到您目录的 .git/hooks/pre-commit
文件中。然后,chmod +x
文件。
#!/bin/sh
files=$(git diff --cached --name-only --diff-filter=ACM | grep ".json$")
if [ "$files" = "" ]; then
exit 0
fi
pass=true
echo "\nValidating Modified JSON Files:\n"
for file in ${files}; do
result=$(jslint ${file} | grep "${file} is OK")
if [ "$result" != "" ]; then
echo "\t3[32mJSLint Passed: ${file}3[0m"
else
echo "\t3[31mJSLint Failed: ${file}3[0m"
pass=false
fi
done
echo "\nJSON Validation Complete\n"
if ! $pass; then
echo "3[41mCOMMIT FAILED:3[0m Your commit contains JSON files do not pass . Please fix the JSLint errors and try again.\n"
exit 1
else
echo "3[42mCOMMIT SUCCEEDED3[0m\n"
fi
Flymake 现在似乎已经过时了。你可以试试 flycheck + jsonlint。 我做了什么让它在 json 模式下工作(emacs 25.1.50,ubuntu 14.04):
- 安装 jsonlint:
sudo npm install jsonlint -g
- 从
flycheck-disabled-checkers
emacs 变量列表中删除json-jsonlist
值。 - 向 emacs 配置添加类似的内容:
(require 'flycheck)
(flycheck-add-mode 'json-jsonlint 'json-mode)
(add-hook 'json-mode-hook 'flycheck-mode)
这对我有用:json 中的错误突出显示并由
M-g M-n
键。当然,在巨大的 flycheck documentation.
Go 的 JSON 解析器还有一个纯 elisp 端口,它将突出显示第一个语法错误:https://github.com/psanford/json-error-mode