Jq
Jq — 將嵌套的 json 轉換為 csv
我有如下範例 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” in 的值
jq
。數組的每個元素最多有 1
name
= “US” 。data
如果沒有name
= “US”,那麼我希望它為空白或 NULL。在上面的例子中,如果第二條記錄沒有name
= “US” 那麼輸出將是city1,blank
orcity1,
。
假設每個
data
元素在其數組中最多有一個元素等於:.LIST.ID``name``US
jq -r <file '.data[] | [ .name, (.LIST.ID[] | select(.name == "US").value)? // null ] | @csv'
它能做什麼:
返回(保留)
data
數組的所有元素;對於 的每個元素
data
,創建一個由以下組成的二元素數組(CSV 格式化所需):每個元素的
name
屬性值;data
數組
value
元素的屬性值,如果有,則等於(如果沒有;您可以使用代替在 CSV 輸出中獲取雙引號欄位來代替完全空的欄位);括號後的表達式確保即使or元素完全失去也不會發生錯誤;.LIST.ID``name``US``null``""``null``?``.LIST``.ID
將生成的數組列表呈現為 CSV 數據。