【发布时间】:2019-11-02 09:50:27
【问题描述】:
我正在尝试将大的JSON 文件转换为CSV 格式。 (我刚刚学会了如何使用jq,所以我还是个初学者)。
我已经成功地转换了大部分数据,但是,我被困在一个数组中。文件中的每个 JSON 对象都应该转换为单个 CSV 行,但我无法让它工作。
我一直在尝试用现有的答案来帮助自己: Convert/Export JSON to CSV
但问题是这个方法为数组中的每一项写入一行,不必要地重复信息。
我使用与上述答案相同类型的命令,唯一的区别是列的名称,但数组块...
例如,我可以有一个类似的JSON 文件:
{resources:[
{"id":"001","name"="Robert","items":[
{"label":"00A","name":"Pen"},
{"label":"00B","name":"Paper"}],
{"id":"002","name"="Bruce","items":[
{"label":"00A","name":"Pen"},
{"label":"00B","name":"Computer"},
{"label":"00C","name":"Headphones"}]
]
}
我想成为的人:
001,Robert,Pen,Paper,
002,Bruce,Pen,Computer,Headphones
我只需要数组的name 列
目前,结果是:
001,Robert,Pen
001,Robert,Paper
002,Bruce,Pen,
002,Bruce,Computer
002,Bruce,Headphones
问题是每个 JSON 对象的实际数组大约有 30 个项目,因此无法使用这种方式。
【问题讨论】:
-
即使您只是从另一个答案中改编了代码,您能否包含您当前的 jq 代码?
-
这里有一个可行的解决方案unix.stackexchange.com/questions/163845/…
-
您的 JSON 在语法上无效。提供正确的语法 - jsonlint.com
标签: json bash csv export-to-csv jq