web-dev-qa-db-ja.com

Ubuntu 16.04のJSONバリデーター

いくつかのJSONファイルバリデータを取得しようとしました。 jqに出会いました。しかし、「jq . file.json」を実行した後、JSON形式の出力が得られました。このコマンドでは、ファイル内のJSONの検証は行われませんでした。
Ubuntuのファイルで構文を確認したり、JSON形式を検証したりする方法を知りたい。教えてください。

6
Jaffer Wilson

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を使用して評価することで確認できます。

5
Byte Commander

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
2
heemayl

python json.toolモジュールを使用してこれを行うことができます

echo '{"name": "dedunu", "country": "LKA"}' | python -m json.tool

ファイルがある場合は、次のように使用できます。

python -m json.tool file.json

ただし、このコマンドの問題は、JSONファイルで問題の詳細を取得できないことです。私はこれから答えを見つけました link

1
dedunumax