Ubuntu 16.04 中的 JSON 验证器

Ubuntu 16.04 中的 JSON 验证器

我正在尝试获取一些 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

相关内容