gpt4 book ai didi

json - 使用保留键名的 jq 展平 JSON

转载 作者:行者123 更新时间:2023-12-01 13:38:09 24 4
gpt4 key购买 nike

我正在尝试展平由嵌套对象组成的 JSON。顶层包含几个键/值对,其中每个值本身就是一个包含多个对象的数组(底层)。

我想使用 jq 得到的只是一个对象数组,其中包含底层的所有对象,每个对象都有一个额外的键/值对,用于标识它最初属于的顶层键。

也就是说,我想转一个JSON

{
"key1": [obj1, obj2],
"key2": [obj3]
}

变成普通数组

[OBJ1, OBJ2, OBJ3]

其中每个 OBJi 只是带有额外键/值对的原始对象

"parent-key-name": keyx

keyxobji 所属的顶层 key ,即 "key1" 代表 obj1obj2“key2” 用于 obj3

我正在努力解决这样一个事实,即在引用底层中的对象时,例如通过 .[],jq 似乎没有内置功能来访问关联的顶层信息。不过,我是 jq 的新手,希望毕竟有一个简单的解决方案。

最佳答案

给定以下输入:

{
"key1": [{"name":"Emma"},{"name":"Bob"}],
"key2": [{"name":"Jean"}]
}

您可以将项目划分为条目,将键存储在变量中,并将每个项目的值添加到 value 对象中:

jq  '[ to_entries[] | .key as $parent | .value[] |
.["parent-key-name"] |= (.+ $parent) ] ' test.json

给出以下输出:

[
{
"name": "Emma",
"parent-key-name": "key1"
},
{
"name": "Bob",
"parent-key-name": "key1"
},
{
"name": "Jean",
"parent-key-name": "key2"
}
]

关于json - 使用保留键名的 jq 展平 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42401073/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com