json - 如何将对象映射到数组以便可以将其转换为 csv?

标签 json jq

我正在尝试转换如下所示的对象:

{
  "123" : "abc",
  "231" : "dbh",
  "452" : "xyz"
}

到如下所示的 csv:

"123","abc"
"231","dbh"
"452","xyz"

我更喜欢使用命令行工具 jq但似乎无法弄清楚如何完成作业。我设法用 jq ' 得到了 key 。 |键的 test.json 但不知道下一步该做什么。

问题是您不能使用 @csv 将这样的 k:v 对象直接转换为 csv。它需要是一个数组,所以我们需要先转换为一个数组。如果键被命名,它会很简单,但它们是动态的,所以它不是那么容易。

最佳答案

试试这个过滤器:

to_entries[] | [.key, .value]
  • to_entries 将对象转换为键/值对象数组。 [] 将数组分解为数组中的每个项
  • 然后对于每个项目,转换为包含键和值的数组。

这会产生以下输出:

[
  "123",
  "abc"
],
[
  "231",
  "dbh"
],
[
  "452",
  "xyz"
]

然后您可以使用 @csv 过滤器将行转换为 CSV 行。

$ echo '{"123":"abc","231":"dbh","452":"xyz"}' | jq -r 'to_entries[] | [.key, .value] | @csv'
"123","abc"
"231","dbh"
"452","xyz"

关于json - 如何将对象映射到数组以便可以将其转换为 csv?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20181467/

相关文章:

json - 更改 Hive 中的 Derby Metastore 以允许具有 >4000B 定义的结构

php - 数据从 JSON 到 php 格式的转换是如何发生的

javascript - 如何合并/连接两个 JSON 文件?

json - 从命令行参数生成 JSON

json - 遍历字典 jq - shell

java - 如何处理在 JSON 名称字段中具有值的 API JSON 响应

c# - 在转换为 XML 之前更改 JSON 对象中的属性名称

json - 使用JQ替换JSON中的下划线

json - 用jq获取JSON中数组元素的索引

string - 使用 jq 对字段进行切片并添加额外的字符