【发布时间】:2019-12-09 22:30:08
【问题描述】:
使用jq 我尝试将 JSON 转换为 CSV。这是我的输入 JSON 的样子:
{
"rows": [
{
"a": ["x","y"],
"b": "some",
"c": "string"
},
{
"a": ["u","v"],
"b": "another",
"c": "string"
}
]
}
想要的输出是这样的:
a | b | c
x y | some | string
u v | another | string
编辑:对于那些抱怨这不是有效的 CSV 的人,这里是符合 RFC 4180 的语法:
a,b,c
x y,some,string
u v,another,string
使用.rows,我成功得到数组:
[{"a":["x","y"],"b":"some","c":"string"},{"a":["u","v"],"b":"another","c":"string"}]
但是.rows | @csv 说:object ({"a":["x","...) is not valid in a csv row。所以,我必须以某种方式加入键“a”中的数组。
使用.rows[] | .a | join(" ") 我得到:
"x y"
"u v"
但是我如何将它返回到我的 JSON 中,然后使用 ... | @csv 来获取我想要的 CSV 数据?
【问题讨论】:
-
这就是我写“输出就像”的原因。我选择了类似表格的演示文稿,以使我期望的输出结构更加明显,希望对读者来说更容易。但我现在已经在符合 RFC 4180 的语法中添加了预期的 CSV。
-
扁平化或转置之类的功能可能会有所帮助?
标签: json csv nested export-to-csv jq