我正在嘗試通過 jq 將 json 物件轉換為 csv。這是json結構:
{
"totalCount": 4440,
"data": [
{
"company": {
"name": "My_company_name",
"countryCode": "US",
"portfolioName": "My_portfolio"
},
"eventDate": "2021-11-22T00:00:00",
"newValue": null,
"oldValue": null,
"ruleCode": 704,
"ruleName": "New Accounts",
"summary": "Explanations..."
},
{
"company": {
"name": "My_company_name 2",
"countryCode": "UK",
"portfolioName": "My_portfolio"
},
"eventDate": "2021-10-22T00:00:00",
"newValue": null,
"oldValue": null,
"ruleCode": 701,
"ruleName": "Hello",
"summary": "otherExplanations..."
}
...
]
}
對于“第一級”中的資料,我沒有問題:
jq -r '.data | map({eventDate, ruleCode, ruleName, summary, oldValue, newValue}) | (first | keys_unsorted) as $keys | map([to_entries[] | .value]) as $rows | $keys,$rows[] | @csv' input.json > output.csv
但是我想添加公司名稱和國家代碼,而我不知道這樣做,這個資料之王在第二個“級別”。
我會得到這樣的東西:
"eventDate","ruleCode","ruleName","summary","oldValue","newValue","companyName", "companyCountryCode"
"2021-11-22T00:00:00",704,"New Accounts","Explanations...",,,"My_company_name", "US"
"2021-11-22T00:00:00",701,"Hello","otherExplanations...",,,"My_company_name 2", "UK"
你可以幫幫我嗎 ?
謝謝
uj5u.com熱心網友回復:
如果您不介意,我添加了 a.以將頂級標題與子級標題分開以使事情變得更容易(即company.name和company.countryCode):
jq --raw-output '[
"eventDate",
"ruleCode",
"ruleName",
"summary",
"oldValue",
"newValue",
"company.name",
"company.countryCode"
] as $h
| $h, (.data[] | [getpath($h[] / ".")])
| @csv'
"eventDate","ruleCode","ruleName","summary","oldValue","newValue","company.name","company.countryCode"
"2021-11-22T00:00:00",704,"New Accounts","Explanations...",,,"My_company_name","US"
"2021-10-22T00:00:00",701,"Hello","otherExplanations...",,,"My_company_name 2","UK"
演示
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/365296.html
