如何通过使用 json 查询匹配值来查找所有 json 键值对
How to find all the json key-value pair by matching the value using json query
我有以下 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->dictionary->b :
$.array[?(@.key=2)].misc.b
现在我需要打印所有值为 0 的标记。与上面所示相同的方法我可以遍历直到 $.array[?(@.key=2)].tokenize.
我如何查询它以打印具有 token:0 的所有值。
准确地说,我希望输出显示为:
[
"tokenize" : {
"firstkey" : {
"token" : 0
},
"thirdkey" : {
"token" : 0
}
}
]
下面的查询已经显示了接近我想要的内容,但它没有显示键(在本例中为 "firstkey" 和 "thirdkey")。
$.tokenize[?(@.token == 0)]
请帮我也搞定这个。
谢谢。
你可以试试这个脚本。
$.tokenize[?(@.token == 0)].token
结果:
[
0,
0
]
$.tokenize[?(@.token == 0)]~
会输出
[
"firstkey",
"thirdkey"
]
对于 OP 的示例 json,使用 https://jsonpath-plus.github.io/JSONPath/demo/ 验证您的数据。
我有以下 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->dictionary->b :
$.array[?(@.key=2)].misc.b
现在我需要打印所有值为 0 的标记。与上面所示相同的方法我可以遍历直到 $.array[?(@.key=2)].tokenize.
我如何查询它以打印具有 token:0 的所有值。
准确地说,我希望输出显示为:
[
"tokenize" : {
"firstkey" : {
"token" : 0
},
"thirdkey" : {
"token" : 0
}
}
]
下面的查询已经显示了接近我想要的内容,但它没有显示键(在本例中为 "firstkey" 和 "thirdkey")。
$.tokenize[?(@.token == 0)]
请帮我也搞定这个。
谢谢。
你可以试试这个脚本。
$.tokenize[?(@.token == 0)].token
结果:
[
0,
0
]
$.tokenize[?(@.token == 0)]~
会输出
[
"firstkey",
"thirdkey"
]
对于 OP 的示例 json,使用 https://jsonpath-plus.github.io/JSONPath/demo/ 验证您的数据。