gpt4 book ai didi

json - 有没有办法从嵌套字段中的对象列表中删除相同的键?

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

我正在设置一个 devops 管道,以便以 JSON 格式存储的某些数据配置文件可以在不同的服务器之间转移。从当前服务器下载它时,我需要清理所有 protected key 和唯一标识符。我正在寻找在 JQ 中执行以下操作的最干净的方法

输入:

{
"TopKey1":{
"some_key":"some_value"
},
"TopKey2":{
"some_key2":"some_value2"
},
"KeytoSearch":[
{
"_id":"sdf",
"non_relevant_key1":"val"
},
{
"_id":"sdfdsdf",
"non_relevant_key2":"val"
},
{
"_id":"sgf",
"non_relevant_key3":"val"
}
]
}

输出:

{
"TopKey1":{
"some_key":"some_value"
},
"TopKey2":{
"some_key2":"some_value2"
},
"KeytoSearch":[
{
"non_relevant_key1":"val"
},
{
"non_relevant_key2":"val"
},
{
"non_relevant_key3":"val"
}
]
}

如果这是一本字典,用 Python 术语来说

for json_object in dictionary["KeytoSearch"]:
json_object.pop("_id")

我尝试了 map 和 del 的组合,但似乎无法用它找出嵌套索引。我收到的错误消息类似于 jq: error (at <stdin>:277): Cannot index string with string "_id"哪一种告诉我,我还没有从根本上理解 jq 是如何工作或将被使用的,但这是我需要走的路,因为我宁愿避免使用 Python 脚本来清理 JSON 对象

最佳答案

使用您的输入 JSON 并假设您的 KeytoSearch 对象中还有其他属性以及 _id 字段,您可以在下面执行。

jq 'del(.KeytoSearch[]._id)'

this jqplay.org演示的片段。正如以下评论之一所确认的,不需要在包含 _ 的属性键周围加上引号。一些元字符(例如属性键值中的 . 需要用引号作为 ".id" 访问)需要正确引用,但 _ 显然不是其中之一。

关于json - 有没有办法从嵌套字段中的对象列表中删除相同的键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56232429/

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