我有以下json数据:
{
"data": [
{
"ticket": "249 [DH-249]",
"id": 249,
"priority": 3,
"title": "kUYWr7gWGH",
"queue": {
"title": "Django Helpdesk",
"id": 1
},
"status": "Open",
"created": "4\u00a0hours ago",
"due_date": "13\u00a0hours ago",
"assigned_to": "uUAKA3ZA 2rg8oS9X",
"submitter": "[email protected]",
"row_class": "",
"time_spent": "",
"kbitem": ""
},
{
"ticket": "250 [DH-250]",
"id": 250,
"priority": 3,
"title": "3kEpyPXp4",
"queue": {
"title": "Django Helpdesk",
"id": 1
},
"status": "Open",
"created": "4\u00a0hours ago",
"due_date": "13\u00a0hours ago",
"assigned_to": "None",
"submitter": "[email protected]",
"row_class": "",
"time_spent": "",
"kbitem": ""
}
],
"recordsFiltered": 195,
"recordsTotal": 195,
"draw": 1
}
如何获得优先级等于最小值的 ID 数组?例如,如果数据中的最小优先级是3,我需要获取id=249,id=250(通常数据较多)
我尝试使用 gpt 给我的 JsonPath 表达式: $.data[?(@.priority == $.data[*].priority.min())].id 但它不起作用
我认为您无法使用 JSONPath 获得它,因为当前的实现不允许正确评估
min()
功能。
您可以切换到 JSR223 PostProcessor 并使用以下代码来解析响应并提取最小优先级的所有
id
属性:
def data = new groovy.json.JsonSlurper().parse(prev.getResponseData()).data
def minPriority = data.min { it.priority }.priority
def ids = data.findAll(element -> element.priority == minPriority).id
if (ids.size() == 1) {
vars.put('id', ids.get(0) as String)
} else {
ids.eachWithIndex { id, index ->
vars.put('id_' + (index + 1), id as String)
}
}
更多信息: