Jqで前処理したいサードパーティシステムからの大量のJSONがありますが、クエリの作成に問題があります。テストケースは次のとおりです。
$ cat test.json
{
"a": "b",
"c": "d",
"e": {
"1": {
"f": "g",
"h": "i"
}
}
}
$ cat test.json|jq .e.1.f
jq: error: Invalid numeric literal at EOF at line 1, column 3 (while parsing '.1.') at <top-level>, line 1:
.e.1.f
ここで出力として「g」を取得するにはどうすればよいですか?または、その1を「1」にキャストして正しく処理するにはどうすればよいですか?
から jqマニュアル :
。["foo"]のような構文を使用してオブジェクトのフィールドを検索することもできます(上記の.fooはこれの省略形ですが、識別子のような文字列に対してのみです)。
生の出力が必要な場合は、引用符も必要で、-r
を使用します。
jq -r '.e["1"].f' test.json