我正在尝试获取一些 JSON 文件验证器。
我遇到了jq
,但运行后jq . file.json
我只得到了 JSON 格式的输出,而不是对我的文件中 JSON 的验证。
我想知道如何在 Ubuntu 中检查文件中的语法或验证 JSON 格式。请指教!
答案1
尝试jsonlint
:
sudo apt install jsonlint
基本使用语法是
jsonlint YOUR-FILE.JSON
man jsonlint
您可以通过输入或访问其来找到其手册在线手册页:
摘录如下:
NAME
jsonlint - A JSON syntax validator and formatter tool
SYNOPSIS
jsonlint [-v][-s|-S][-f|-F][-ecodec]inputfile.json...
[...]
OPTIONS
The return status will be 0 if the file is legal JSON, or non-zero
otherwise. Use -v to see the warning details.
[...]
-v, --verbose
Show details of lint checking
-s, --strict
Be strict in what is considered legal JSON (the default)
-S, --nonstrict
Be loose in what is considered legal JSON
-f, --format
Reformat the JSON (if legal) to stdout
[...]
因此,您可以通过检查 的返回代码来查看 JSON 是否有效。您可以通过随后jsonlint
运行来查看它(0=OK,1=无效),或者通过使用、或 对其进行评估来查看它。echo $?
&&
||
if
答案2
我试过了jsonlint
,但是没有用。
jq . may-file.json
工作很好!
希望这个反馈对您有帮助。
答案3
json.tool
你可以使用 python模块来实现
echo '{"name": "dedunu", "country": "LKA"}' | python -m json.tool
如果您有文件,可以按如下方式使用它。
python -m json.tool file.json
但是这个命令的问题在于你无法在 JSON 文件中获取有关该问题的详细信息。我从这里找到了答案关联。
答案4
jq
将明确地吐出错误,并且您还可以检查退出状态,这是1
针对解析错误的,显然也是0
针对成功的。
例如:
% jq '.' <<<'{"foo": "spam", "bar": 1}'
{
"bar": 1,
"foo": "spam"
}
% echo $?
0
现在,让我们用 -- 替换之后:
使输入无效:=
"bar"
json
% jq '.' <<<'{"foo": "spam", "bar"= 1}'
parse error: Invalid numeric literal at line 1, column 23
% echo $?
1