[英]Parsing nested json with jq
我正在解析嵌套的json,以從json響應中獲取特定值。 json響應如下:
{
"custom_classes": 2,
"images":
[
{
"classifiers":
[
{
"classes":
[
{
"class": "football",
"score": 0.867376
}
],
"classifier_id": "players_367677167",
"name": "players"
}
],
"image": "1496A400EDC351FD.jpg"
}
],
"images_processed": 1
}
從類images => classifiers => classes:“ class”和“ score”是我要保存在csv文件中的值。 我發現了如何將結果保存到csv文件中。 但是我無法單獨解析images
。 我可以得到custom_classes
和image_processed
。
我正在使用jq-1.5
。
我嘗試過的不同命令:
curl "Some address"| jq '.["images"]'
curl "Some address"| jq '.[.images]'
curl "Some address"| jq '.[.images["image"]]'
在大多數情況下,錯誤是關於無法對數組images
進行索引。
有什么提示嗎?
我必須說,我不太擅長jq
,所以所有這些數組迭代都可能以某種方式被簡化,但這產生了您提到的值:
cat foo.json | jq ".[] | .images | .[] | .classifiers | .[] | .classes | .[] | .[]"
如果您也想要按鍵,則只需省略最后一個.[]
即可。
編輯 @chepner在評論中指出,確實可以將其簡化為
cat foo.json | jq ".images[].classifiers[].classes[] | [.class, .score] | @csv "
jq解決方案以獲得准備好的csv記錄:
jq -r '.images[0].classifiers[0].classes[0] | [.class, .score] | @csv' input.json
輸出:
"football",0.867376
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.