我希望基于两个json数组创建一个CSV(数组是一个带有键值对的大型jason数组的缩减)
[
"Name",
"Role",
"Type",
"Service",
"Group",
]
[
"some-server.com",
"web server",
"production",
"apps",
"main",
]
我能够更少地获得我正在寻找的东西:
jq -r '[.Tags[].Key], [.Tags[].Value] | join (",")' output.json
问题是,密钥并不总是以相同的顺序排序。对于某些对象,我得到了:
Name, Role, Type
和其他时间:
Role, Type Name ..
我正在寻找一种让输出保持一致的方法。
答案 0 :(得分:0)
您可以使用以下方法规范化对象:
def sortKeys: to_entries | sort | from_entries
例如,如果A是非标准化对象的数组,则可以写:
A | map(sortKeys)
或者可以在创建对象后立即对其进行规范化。
对于CSV,您可能希望根据预先确定的键名数组修复订单。在这种情况下,您可以使用:
def selectKeys(keys):
. as $in | reduce keys[] as $k ({}; . + {($k): $in[$k]})