我有两个请求返回具有类似 JSON 结构的响应。当我尝试在一个上使用 JSON 提取器时,它可以正常工作,但是当我尝试以相同的方式从第二个中提取值时,它就不起作用了。但是,让我们切入正题。
我的第一反应是这样的:
{
"values": [
{
"id": 1,
"name": "Fendi",
"logoId": null,
"belongsToUser": true
},
{
"id": 2,
"name": "Jean Paul Gaultier",
"logoId": null,
"belongsToUser": true
},
{
"id": 3,
"name": "Nike",
"logoId": null,
"belongsToUser": false
},
{
"id": 4,
"name": "Adidas",
"logoId": null,
"belongsToUser": true
}
]
}
我尝试在此 JSON 提取器中提取 "belongsToUser": false 的对象的 ID:
JSON path expression: values[?(@.belongsToUser == false)].id
Match No.: 0
Default Values: null
它工作得很好。
但是,当我在第二个响应中尝试这种方式时,它不起作用。响应如下所示:
{
"values": [
{
"id": 12,
"brandName": "Fendi",
"productCategoryName": "Shoes",
"size": "38",
"colorNames": [
"color_green"
],
"date": 1536537600000,
"imageId": null,
"title": "Money",
"numberOfOffers": 0,
"status": "ONGOING"
},
{
"id": 13,
"brandName": "Fendi",
"productCategoryName": "Shoes",
"size": "38",
"colorNames": [
"color_green"
],
"date": 1536537600000,
"imageId": null,
"title": "Exchange",
"numberOfOffers": 0,
"status": "ONGOING"
}
]
}
我尝试使用 JSON 提取器获取具有标题变量 =“Money”的对象的 ID:
JSON path expression: values[?(@.title == 'Money')].id
Match No.: 0
Default Values: null
但它没有找到 id 值并将我的 JMeter 变量设置为空。我还尝试将 Money 不加引号或用双引号括起来,并尝试了不同的 JSON 路径表达式,例如
$.values[?(@.title == 'Money')].id
$..[?(@.title == 'Money')].id
$.[?(@.title == 'Money')].id
但这些似乎都不起作用。您知道我的 JSON 路径表达式应该如何正常工作吗?为什么它在第一种情况下不能在第二种情况下工作?是因为第二个响应中的对象有内部数组吗?