[英]Use JQ to parse JSON array of objects, using select to match specified key-value in the object element, then convert to CSV
[英]Using jq to parse json key and value to CSV
我是jq
的新手,很高興使用它。 我試圖用 python 實現的目標是可能的,但目的是學習jq
。我試圖用 curl 命令處理 JSON。
以下是我的curl
命令的響應
{
"results": [{
"name": "smith Jones",
"DOB": "1992-03-26",
"Enrollmentdate": "2013-08-24"
},
{
"name": "Jacob Mathew",
"DOB": "1993-03-26",
"Enrollmentdate": "2014-10-02"
},
{
"name": "Anita Rodrigues",
"DOB": "1994-03-26",
"Enrollmentdate": "2015-02-19"
}
]
}
我能夠在某種程度上獲得所需的輸出。 但我無法在輸出中打印密鑰本身。 當我將此 csv 文件 (file.csv) 導出到 excel 時,我需要此信息以便稍后將其用作列的標題。 我打算編寫一個 bash 腳本來實現 csv 到 excel。
<curl-command>|jq '.results | map(.name), map(.DOB), map(.Enrollmentdate) | @csv' >file.csv
我能夠得到如下輸出
smith jones, jacob Mathew, Anita Rodrigues
1992-03-26, 1993-03-26, 1994-03-26
2013-08-24, 2014-10-02, 2015-02-19
我想要實現的目標如下
name:smith jones, name:jacob Mathew, name:Anita Rodrigues
DOB:1992-03-26, DOB:1993-03-26, DOB:1994-03-26
Enrollmentdate:2013-08-24, Enrollmentdate:2014-10-02, Enrollmentdate:2015-02-19
.results
| map(to_entries[] | select(.key=="name")),
map(to_entries[] | select(.key=="DOB")),
map(to_entries[] | select(.key=="Enrollmentdate"))
| map("\(.key):\(.value)" )
| @csv`
如果你想要 CSV,那么堅持上面的; 如果您確信永遠不需要引用字符串, @csv
更改為join(", ")
; 如果您只想在不需要時刪除引號,您可以為簡單的過濾器添加一個 def 來做到這一點。
上to_entries
的重復to_entries
。 您可能需要考慮如何避免它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.