JsonPath,如何获取属性值最小值的记录id?

问题描述 投票:0回答:1

我有以下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 但它不起作用

javascript json performance jmeter jsonpath
1个回答
0
投票

我认为您无法使用 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)
    }
}

更多信息:

© www.soinside.com 2019 - 2024. All rights reserved.