いくつかのJSONファイルバリデータを取得しようとしました。 jq
に出会いました。しかし、「jq . file.json
」を実行した後、JSON形式の出力が得られました。このコマンドでは、ファイル内のJSONの検証は行われませんでした。
Ubuntuのファイルで構文を確認したり、JSON形式を検証したりする方法を知りたい。教えてください。
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
[...]
したがって、jsonlint
の戻りコードを確認することで、JSONが有効かどうかを確認できます。すぐにecho $?
を実行(0 = OK、1 =無効)するか、&&
、||
またはif
を使用して評価することで確認できます。
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
python json.tool
モジュールを使用してこれを行うことができます
echo '{"name": "dedunu", "country": "LKA"}' | python -m json.tool
ファイルがある場合は、次のように使用できます。
python -m json.tool file.json
ただし、このコマンドの問題は、JSONファイルで問題の詳細を取得できないことです。私はこれから答えを見つけました link 。