Как найти все пары ключ-значение json, сопоставив значение с помощью запроса json
У меня есть ниже структура JSON:
{
"key" : "value",
"array" : [
{ "key" : 1 },
{ "key" : 2, "misc": {
"a": "Apple",
"b": "Butterfly",
"c": "Cat",
"d": "Dog"
} },
{ "key" : 3 }
],
"tokenize" : {
"firstkey" : {
"token" : 0
},
"secondkey" : {
"token" : 1
},
"thirdkey" : {
"token" : 0
}
}
}
Я могу пройти вышеупомянутую структуру до массива-> словарь-> б с помощью следующего синтаксиса:
$.array[?(@.key=2)].misc.b
Теперь мне нужно напечатать все токены, которые имеют значение 0. Таким же образом, как показано выше, я могу пройти до $.array[?(@. Key=2)]. Tokenize.
Как я могу запросить его, чтобы напечатать все значения, имеющие токен:0 .
Чтобы быть очень точным, я хочу, чтобы вывод был показан как:
[
"tokenize" : {
"firstkey" : {
"token" : 0
},
"thirdkey" : {
"token" : 0
}
}
]
Следующий запрос уже показывает что-то рядом с тем, что я хочу, но он не показывает ключи ("firstkey" и "thirdkey" в данном случае).
$.tokenize[?(@.token == 0)]
Пожалуйста, помогите мне получить это тоже.
Благодарю.
1 ответ
Вы можете попробовать этот скрипт.
$.tokenize[?(@.token == 0)].token
Результат:
[
0,
0
]
$.tokenize[?(@.token == 0)]~
выведет
[
"firstkey",
"thirdkey"
]
для образца json OP используйте https://jsonpath-plus.github.io/JSONPath/demo/ для проверки ваших данных.