Я настраиваю конвейер 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 - это то, чего я бы лучше избегал