[英]Parse json output using jq
首先,非常感謝您的支持。
我無法將json輸出解析為csv格式。 我能夠得到某種輸出,但是不符合預期。
卷曲命令輸出
{
"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"
}
]
}
JQ commond二手
<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
這可能不完全是csv,但低於預期的輸出。
Name DOB Enrollmentdate
smith jones, 1992-03-26, 2013-08-24
jacob Mathew, 1993-03-26, 2014-10-02
Anitha Rodrigues, 1994-03-26, 2015-02-19
使用示例JSON,調用:
jq -r '
.results[]
| [.name, .DOB, .Enrollmentdate ]
| @csv'
產生:
"smith Jones","1992-03-26","2013-08-24"
"Jacob Mathew","1993-03-26","2014-10-02"
"Anita Rodrigues","1994-03-26","2015-02-19"
如果您不想(在這種情況下)多余的引號,可以用join(",")
替換@csv
join(",")
但是最好編寫一個簡單的過濾器來處理逗號等值。
如果第一個結果的鍵順序正確,則可以避免:
(.results[0] | keys_unsorted),
(.results[]
| [.name, .DOB, .Enrollmentdate ])
| @csv
但是,按照以下方式使用jq魔術可能會更好:
(.results[0] | keys_unsorted) as $headers
| $headers,
(.results[]
| [getpath($headers[]|[.])])
| @csv
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.