我正在嘗試從 json 檔案中獲取所有資料,但是在過濾掉沒有兩個值之一(EMAIL、JOB_TITLE)的缺失物件時遇到了問題。
這是 json :
[{"primary": "JOHN DOE", "attributes": [{"type": "double", "name":"BUILDING_NUMBER", "value": "123"}, {"type": "double", "name": "FLOOR", "value": 10}, {"type": "string", "name": "EMAIL", "value":"[email protected]"}, {"type": "string", "name": "JOB_TITLE", "value": "SALESMAN"} ], "aliases": [{"alias": "[email protected]"}]},{"primary": "LORRAINE DOE", "attributes": [{"type": "double", "name": "BUILDING_NUMBER", "value": 456}, {"type": "double", "name": "FLOOR", "value": 10}, {"type": "string", "name": "STATUS", "value": "Unavaliable"}, {"type": "string", "name": "EMAIL", "value": "[email protected]"}, {"type": "string", "name": "JOB_TITLE", "value": "SECRETARY"} ], "aliases": [{"alias": "[email protected]"}, {"alias": "[email protected]"}]},{"primary": "JACK DOE", "attributes": [{"type": "double", "name": "BUILDING_NUMBER", "value": "123"}, {"type": "double", "name": "FLOOR", "value": 10}, {"type": "string", "name":"JOB_TITLE", "value": "OWNER"}], "aliases": [{"alias":"[email protected]"},{"alias": "[email protected]"}]}, {"primary": "NOAH DOE", "attributes": [{"type": "double", "name": "BUILDING_NUMBER", "value": "123"}, {"type": "double", "name": "FLOOR", "value": 10}, {"type": "string", "name": "EMAIL", "value": "[email protected]"}], "aliases": [{"alias": "[email protected]"}]}]
我嘗試創建的串列:
"[email protected]": "SALESMAN",
"[email protected]": "SECRETARY"
我使用的代碼:
包含 ("EMAIL"))' | jq .值 | sed 'N;s/\n/:/' | sed 's/$/,/'
uj5u.com熱心網友回復:
這會將屬性陣列轉換為物件,使用和from_entries根據兩個鍵的存在進行過濾,并使用字串插值提取所需的值:selecthas
jq -r '
.[].attributes | from_entries
| select(has("JOB_TITLE") and has("EMAIL"))
| "\"\(.EMAIL)\": \"\(.JOB_TITLE)\""
'
"[email protected]": "SALESMAN"
"[email protected]": "SECRETARY"
演示
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/522997.html
標籤:json壳sedjq
