如何编写 JSON 路径以根据字符串过滤器获取特定值?
How to write JSON Path to get particular value based on string filter?
我是 JSON 路径的新手,我正在尝试使用下面 JSON 有效负载中的 JsonPath 获取对应于 name='Candy' 的 'id'。
{
"responsePayload": [
{
"content": {
"id": "101",
"name": "Candy"
},
"links": [
{
"rel": "self",
"link": "api/v1/sweets/101",
"id": "101"
}
]
},
{
"content": {
"id": "102",
"name": "Chocolate"
},
"links": [
{
"rel": "self",
"link": "api/v1/sweets/102",
"id": "102"
}
]
}
]
}
为此,我尝试了 Jsonpath $.responsePayload[0].content[?(@.name=='Candy')].id 但这不起作用.我正在使用 https://jsonpath.com/ 来测试这个 JsonPath。请指导我如何才能达到要求的结果。
你真的很接近。您需要表达式中的更多路径。
$.responsePayload[?(@.content.name=='Candy')].content.id
您的响应中的 [0]
仅隔离了第一个元素,但听起来您想遍历 responsePayload
中的整个数组。为此,过滤器表达式选择器 [?(...)]
必须作用于该数组。
接下来,@
表示当前项目,您可以从中构建完整路径。你可以在上面看到它是如何工作的。
最后,当表达式returns 为真时,筛选表达式选择器returns 的完整项。因此,您需要再次导航到 .content.id
以获取您想要的值。
我是 JSON 路径的新手,我正在尝试使用下面 JSON 有效负载中的 JsonPath 获取对应于 name='Candy' 的 'id'。
{
"responsePayload": [
{
"content": {
"id": "101",
"name": "Candy"
},
"links": [
{
"rel": "self",
"link": "api/v1/sweets/101",
"id": "101"
}
]
},
{
"content": {
"id": "102",
"name": "Chocolate"
},
"links": [
{
"rel": "self",
"link": "api/v1/sweets/102",
"id": "102"
}
]
}
]
}
为此,我尝试了 Jsonpath $.responsePayload[0].content[?(@.name=='Candy')].id 但这不起作用.我正在使用 https://jsonpath.com/ 来测试这个 JsonPath。请指导我如何才能达到要求的结果。
你真的很接近。您需要表达式中的更多路径。
$.responsePayload[?(@.content.name=='Candy')].content.id
您的响应中的 [0]
仅隔离了第一个元素,但听起来您想遍历 responsePayload
中的整个数组。为此,过滤器表达式选择器 [?(...)]
必须作用于该数组。
接下来,@
表示当前项目,您可以从中构建完整路径。你可以在上面看到它是如何工作的。
最后,当表达式returns 为真时,筛选表达式选择器returns 的完整项。因此,您需要再次导航到 .content.id
以获取您想要的值。