gpt4 book ai didi

json - 使用 jq 将字符串拆分为嵌套对象

转载 作者:行者123 更新时间:2023-12-04 07:34:53 24 4
gpt4 key购买 nike

我正在尝试将数据从 consul kv 导出到 json 中,其中包含 consul 中每个深度级别的嵌套对象。

从领事返回的示例 json:

[
{
"LockIndex": 0,
"Key": "foobar/testing",
"Flags": 0,
"Value": "xxxxx",
"CreateIndex": 833,
"ModifyIndex": 833
},
{
"LockIndex": 0,
"Key": "foobar/bazbar",
"Flags": 0,
"Value": "xxxxx",
"CreateIndex": 833,
"ModifyIndex": 833
}
]

所需的 JSON:
[
{
"foobar": {
"testing": "xxxxx",
"bazbar": "xxxxx"
}
}
]

我有点接近 jq '.[] | objects | {Key: .Key | split("/"), Value: .Value}'但我只是不明白如何基于 .Key 的 split() 进行递归并创建嵌套对象。我想我还需要 sort_by(.Key) 来处理乱序数据,除非我可以 | add任意并让 jq 解析结构。

我意识到 xxxxx是 base64 编码的,希望是 base64d很快就会合并,但在那之前我想我可以用 shell 后处理来解码它。

最佳答案

以下内容在您提供的特定情况下生成感兴趣的 JSON 对象,但也提供了一个合理的概括,以防有多个“foobar”前缀:

map( . as $o | .Key | split("/") | {(.[0]): {(.[1]): ($o|.Value) }} )
| reduce .[] as $o
( {};
($o|keys[0]) as $key | . + { ($key): (.[$key] + $o[$key]) } )

输出:
{
"foobar": {
"testing": "xxxxx",
"bazbar": "xxxxx"
}
}

关于json - 使用 jq 将字符串拆分为嵌套对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36146782/

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