jq 将对象键值映射到包含两者的对象数组
jq map object key value to array of objects containing both
我想在对象本身中放置一个对象父键,并将每个键值对转换为一个数组
鉴于:
{
"field1": {
"key1": 11,
"key2": 10
},
"field2": {
"key1": 11,
"key2": 10
}
}
期望的输出
[
{"name": "field1", "key1": 11, "key2": 10},
{"name": "field2", "key1": 11, "key2": 10}
]
我知道 jq keys
会给我 ["field1", "field2"]
而 jq '[.[]]'
会给我
[
{ "key1": 11, "key2": 10 },
{ "key1": 11, "key2": 10 }
]
我想不出结合它们的方法,我该怎么办?
为每个键生成一个 {"name": <key>}
形式的对象,并将其与键的值合并。
to_entries | map({name: .key} + .value)
或:
[keys_unsorted[] as $k | {name: $k} + .[$k]]
类似下面的内容。使用 keys[]
获取 JSON 中的键列表,并通过在每个对象上索引键添加新字段 name
。
jq '[ keys[] as $k | { name: $k } + .[$k] ]'
如果要保持键的顺序,请使用keys_unsorted[]
。
我想在对象本身中放置一个对象父键,并将每个键值对转换为一个数组
鉴于:
{
"field1": {
"key1": 11,
"key2": 10
},
"field2": {
"key1": 11,
"key2": 10
}
}
期望的输出
[
{"name": "field1", "key1": 11, "key2": 10},
{"name": "field2", "key1": 11, "key2": 10}
]
我知道 jq keys
会给我 ["field1", "field2"]
而 jq '[.[]]'
会给我
[
{ "key1": 11, "key2": 10 },
{ "key1": 11, "key2": 10 }
]
我想不出结合它们的方法,我该怎么办?
为每个键生成一个 {"name": <key>}
形式的对象,并将其与键的值合并。
to_entries | map({name: .key} + .value)
或:
[keys_unsorted[] as $k | {name: $k} + .[$k]]
类似下面的内容。使用 keys[]
获取 JSON 中的键列表,并通过在每个对象上索引键添加新字段 name
。
jq '[ keys[] as $k | { name: $k } + .[$k] ]'
如果要保持键的顺序,请使用keys_unsorted[]
。