使用jq或Python将JSON转为CSV
需要帮助把这个JSON转换成CSV格式,并且使用Column Dimension中的一个特定元素作为CSV的列标题。
输入的JSON你的文本
{
"Columns": [
{
"Id": "ItemName",
"IsEditable": false
},
{
"Id": "Date",
"IsEditable": false
},
{
"Id": "Qty",
"IsEditable": false
}
],
"Rows": [
{
"Values": [
"ITEM1",
"10-MAY-2024",
"100"
]
},
{
"Values": [
"ITEM2",
"20-MAY-2024",
"200"
]
},
{
"Values": [
"ITEM3",
"30-MAY-2024",
"400"
]
}
],
"QueryHandle": {
"QueryID": "00101",
"Worksheet": {
"Name": "Test20",
"Scope": "NA"
},
"WorkAlloc": "2024-MAY"
},
"RowCount": 3
}
需要的CSV输出格式(我只需要下面的数据,JSON中的其他元素可以忽略)。
列标题来自于.Columns[]|.Id
ItemName, Date, Qty
"Item1","10-MAY-2024","100"
"Item2","20-MAY-2024","200"
"Item3","20-MAy-2024","400"
我尝试参考了这个帖子:
但一直没能成功。
1 个回答
0
你需要把输出的行收集到数组里。至于表头,你已经自己给出了路径:.Columns[].Id
。而实际的行也已经整理成一个数组了。
jq -r '[.Columns[].Id], .Rows[].Values | @csv'
"ItemName","Date","Qty"
"ITEM1","10-MAY-2024","100"
"ITEM2","20-MAY-2024","200"
"ITEM3","30-MAY-2024","400"
注意:如果想要改变字母的大小写,可以使用ascii_upcase
或者ascii_downcase
。如果不是所有字母都需要改变大小写,先把它们分开成单个字符,然后再用add
把它们组合起来。