我正在尝试转换如下所示的对象:
{
"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/