「game」、「toy」、「book」の後に値を印刷する方法は?以下は、ファイルのjq '.'の出力です。
{ "reports": [ { "games": 3, "toys": 0, "books": 3, "to": "2017-07-22T00:00:00.000+0000", "from": "2017-07-21T00:00:00.000+0000", "eventType": "bookedIn", "rowName": "CWQ" }, { "games": 0, "toys": 0, "books": 0, "to": "2017-07-22T00:00:00.000+0000", "from": "2017-07-21T00:00:00.000+0000", "eventType": "bookedOut", "rowName": "AED" } ] }
私は前に試しました
{echo"[";猫ファイル; echo "]"} | jq -r '.[] | ( "\n" + .rowName + ":", "ゲーム-> " + (.games | tostring ) "おもちゃ-> " + (.toys | tostring), "本-> " + (.books | tostring) )) '
私は何かが間違っているようです。
修正する 私が知っている限り、本にプロバイダと名前という2つの異なる項目があるとしましょう。 - ?
jq -r '.reports |
.[] |
("\n" + .rowName + ":",
"Games: " + (.games | tostring),
"Toys: " + (.toys | tostring),
.books | .[] |
("\n" + .name + ": ",
"provider: " + (.provider | tostring) ) )
' response.json
jq: エラー (response.json:1): Cannot iterate over null(null) が発生します。
ベストアンサー1
JSONコマンドラインパーサーを使用してくださいjq
。
$ jq -r '.reports[] |
"\(.rowName) :",
"books -> \(.books)",
"toys -> \(.toys)",
"games -> \(.games)\n"' input.json
CWQ:
books -> 3
toys -> 0
games -> 3
AED:
books -> 0
toys -> 0
games -> 0
注:これはjq
文字列補間を使用し、配列内のすべての項目を繰り返してreports
関連情報を選択します。
.books
更新:オブジェクト配列の操作:
与えられた
{
"reports": [
{
"games": 3,
"toys": 0,
"books": [
{
"provider": "The provider",
"name": "The name"
}
],
"to": "2017-07-22T00:00:00.000+0000",
"from": "2017-07-21T00:00:00.000+0000",
"eventType": "bookedIn",
"rowName": "CWQ"
},
{
"games": 0,
"toys": 0,
"books": [
{
"provider": "The 1st provider",
"name": "The 1st name"
},
{
"provider": "The 2nd provider",
"name": "The 2nd name"
}
],
"to": "2017-07-22T00:00:00.000+0000",
"from": "2017-07-21T00:00:00.000+0000",
"eventType": "bookedOut",
"rowName": "AED"
}
]
}
私たちは簡単に行うことができます
$ jq -r '.reports[] |
"\(.rowName):",
( .books[] | "book name -> \(.name)",
"book provider -> \(.provider)" ),
"toys -> \(.toys)",
"games -> \(.games)\n"'
CWQ:
book name -> The name
book provider -> The provider
toys -> 0
games -> 3
AED:
book name -> The 1st name
book provider -> The 1st provider
book name -> The 2nd name
book provider -> The 2nd provider
toys -> 0
games -> 0