{
"data": [
{
"displayName": "First Name",
"rank": 1,
"value": "VALUE"
},
{
"displayName": "Last Name",
"rank": 2,
"value": "VALUE"
},
{
"displayName": "Position",
"rank": 3,
"value": "VALUE"
},
{
"displayName": "Company Name",
"rank": 4,
"value": "VALUE"
},
{
"displayName": "Country",
"rank": 5,
"value": "VALUE"
},
]
}
我想要这种格式的CSV文件:
First Name, Last Name, Position, Company Name, Country
VALUE, VALUE, VALUE, VALUE, VALUE, VALUE
这只能使用jq吗?我没有任何编程技巧.
解决方法:
jq有一个过滤器@csv,用于将数组转换为CSV字符串.此过滤器考虑了与CSV格式相关的大多数复杂性,从字段中嵌入的逗号开始. (jq 1.5有一个类似的过滤器@tsv,用于生成制表符分隔值文件.)
当然,如果标题和值都保证没有逗号和双引号,那么可能不需要使用@csv过滤器.否则,使用它可能会更好.
例如,如果’公司名称’是’史密斯,史密斯和史密斯’,
如果其他值如下所示,使用“-r”选项调用jq将生成有效的CSV:
$jq -r '.data | map(.displayName), map(.value) | @csv' so.json2csv.json
"First Name","Last Name","Position","Company Name","Country"
"John (""Johnnie"")","Doe","Director, Planning and Posterity","Smith, Smith and Smith","Transylvania"