【发布时间】:2019-10-07 12:03:16
【问题描述】:
我正在设置一个 devops 管道,以便以 JSON 格式存储的某些数据配置文件可以在不同的服务器之间转移。从当前服务器下载它时,我需要清理所有受保护的密钥和唯一标识符。我正在寻找在 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 对象是我宁愿避免的东西
【问题讨论】:
-
@Inian :感谢您指出我已经编辑了我的帖子,希望现在应该清楚了
-
@peak 道歉我将它从 JSON 验证器粘贴到一组花括号中,使其无效,我希望最小/可读性方面很好
-
fibonachoceres - 没问题!