以下のサンプルJSONがあります。
{
"data": [
{
"name": "city",
"LIST": {
"ID": [
{
"value": "ny",
"name": "US"
},
{
"value": "lon",
"name": "GB"
},
{
"value": "Toronto",
"name": "CA"
}
]
}
},
{
"name": "city1"
}
]
}
次の値を取得したい
city,ny
city1,
私はname = "US"の値だけが欲しいですjq
。
配列の各要素の最大値は1 name
= "US"ですdata
。 ="US"がない場合はname
空またはNULLになります。上記の例では、2番目のレコードに= "US"がない場合、出力はまたはにname
なります。city1,blank
city1,
ベストアンサー1
各data
要素が次のようになるとします。最大.LIST.ID
配列の1つの要素name
は次のとおりですUS
。
jq -r <file '.data[] |
[ .name, (.LIST.ID[] | select(.name == "US").value)? // null ] |
@csv'
できること:
- 配列のすべての要素を返す(保持)します
data
。 - の各要素に対して、以下を
data
含む2要素配列(CSV書式設定に必要)を作成します。name
各要素data
の属性値- などの配列要素のプロパティ値
value
(そうでない場合は、inを使用して完全に空のフィールドではなくCSV出力から二重引用符で囲まれたフィールドを取得できます)が完全に欠落しています。エラーは発生しません。.LIST.ID
name
US
null
""
null
?
.LIST
.ID
- 結果配列のリストをCSVデータとしてレンダリングします。