使用 jq 将 json 数组转换为 csv

Conversion of json array to csv using jq

使用 jq 将 json 数组转换为 csv 结果如下:

$ echo '["a",1,true,"comment"]' | jq '.|@csv'
"\"a\",1,true,\"comment\""

令我惊讶的是整个数组变成了一个字符串而不是值列表。我该怎么做才能得到

"a",1,true,"comment"

代替?

您误解了 @ 过滤器的意义。这些是字符串格式化过滤器,它们产生字符串。所以 @csv returns 数组的字符串表示形式为 csv 行。这正是它应该做的。 return "unstringified" 版本是错误的,因为它无法进一步处理。

如果您想要原始 "unstringified" 输出,请使用 -r 原始输出选项。

$ echo '["a",1,true,"comment"]' | jq -r '@csv'
"a",1,true,"comment"