Как применить условия на ответ JSON в Jmeter?

Ответ таков:

Я должен извлечь все 'deviceResponseStatus.id', где status="PENDING", как реализовать это, используя JSON Path или REGEX в Jmeter?

{
  "apiResponseStatus": "SUCCESS",
  "deviceResponseList": [
    {
      "apiResponseStatus": "SUCCESS",
      "id": 23,
      "ownership": "CORPORATE",
      "deviceName": "Demimbu",
      "deviceType": "MOBILE",
      "osType": "ANDROID",
      "inTotalStorage": 0,
      "inAvailableStorage": 0,
      "exTotalStorage": 0,
      "exAvailableStorage": 0,
      "osVersion": "4.2",
      "buildVersion": "1.01.08",
      "status": "PENDING",
      "isDeleted": false,
      "policyIdNames": {
        "id": 3,
        "name": "Test Policy 3"
      },
      "deviceGroupIdNames": {
        "id": 1,
        "name": "Default Group"
      },
      "userIdName": {
        "id": 1,
        "name": "Randy Lewis"
      },
      "lastConnected": 1423810405000,
      "createdByIdName": {
        "id": 1,
        "name": "Randy Lewis"
      },
      "locked": false,
      "traceOn": false,
      "userEmail": "mdm.user1@gmail.com",
      "enrollmentDate": 1423790255000,
      "simNumbers": [
        "1236547896"
      ],
      "imeiCodes": [],
      "mobileNumbers": [
        "4558585858858"
      ],
      "createDate": 1421927250000,
      "lastModified": 1423810406000,
      "rooted": false,
      "roaming": false,
      "compliant": false
    },
    {
      "apiResponseStatus": "SUCCESS",
      "id": 24,
      "ownership": "CORPORATE",
      "deviceName": "Photobean",
      "deviceType": "MOBILE",
      "osType": "ANDROID",
      "inTotalStorage": 20941258752,
      "inAvailableStorage": 8024924160,
      "exTotalStorage": 0,
      "exAvailableStorage": 0,
      "bluetoothMacAddress": "8C:3A:E3:BE:C2:04",
      "wirelessMacAddress": "8c:3a:e3:51:bb:e3",
      "model": "LG-D686",
      "osVersion": "4.4.2",
      "buildVersion": "1.01.09",
      "status": "PENDING",
      "isDeleted": false,
      "policyIdNames": {
        "id": 3,
        "name": "Test Policy 3"
      },
      "deviceGroupIdNames": {
        "id": 1,
        "name": "Default Group"
      },
      "userIdName": {
        "id": 1,
        "name": "Randy Lewis"
      },
      "make": "LGE",
      "lastConnected": 1423648831000,
      "createdByIdName": {
        "id": 1,
        "name": "Randy Lewis"
      },
      "locked": false,
      "traceOn": false,
      "userEmail": "mdm.user1@gmail.com",
      "enrollmentDate": 1423628675000,
      "simNumbers": [
        "404909008623970"
      ],
      "imeiCodes": [
        "359004053152889",
        "359004053152871"
      ],
      "mobileNumbers": [
        "638847339387"
      ],
      "createDate": 1422435029000,
      "lastModified": 1423648831000,
      "rooted": true,
      "roaming": false,
      "compliant": false
    },
    {
      "apiResponseStatus": "SUCCESS",
      "id": 25,
      "ownership": "CORPORATE",
      "deviceName": "Livetube",
      "deviceType": "MOBILE",
      "osType": "ANDROID",
      "inTotalStorage": 0,
      "inAvailableStorage": 0,
      "exTotalStorage": 0,
      "exAvailableStorage": 0,
      "osVersion": "4.2",
      "buildVersion": "1.01.08",
      "status": "APPROVAL_PENDING",
      "isDeleted": false,
      "policyIdNames": {
        "id": 3,
        "name": "Test Policy 3"
      },
      "deviceGroupIdNames": {
        "id": 1,
        "name": "Default Group"
      },
      "userIdName": {
        "id": 1,
        "name": "Randy Lewis"
      },
      "lastConnected": 1423810522000,
      "createdByIdName": {
        "id": 1,
        "name": "Randy Lewis"
      },
      "locked": false,
      "traceOn": false,
      "userEmail": "mdm.user1@gmail.com",
      "enrollmentDate": 1423790371000,
      "simNumbers": [
        "1236547896"
      ],
      "imeiCodes": [],
      "mobileNumbers": [
        "4558585858858"
      ],
      "createDate": 1422435030000,
      "lastModified": 1423810522000,
      "rooted": false,
      "roaming": false,
      "compliant": false
    },
    {
      "apiResponseStatus": "SUCCESS",
      "id": 26,
      "ownership": "CORPORATE",
      "deviceName": "Riffwire",
      "deviceType": "MOBILE",
      "osType": "IOS",
      "inTotalStorage": 0,
      "inAvailableStorage": 0,
      "exTotalStorage": 0,
      "exAvailableStorage": 0,
      "status": "PENDING",
      "isDeleted": false,
      "policyIdNames": {
        "id": 3,
        "name": "Test Policy 3"
      },
      "deviceGroupIdNames": {
        "id": 1,
        "name": "Default Group"
      },
      "userIdName": {
        "id": 1,
        "name": "Randy Lewis"
      },
      "createdByIdName": {
        "id": 1,
        "name": "Randy Lewis"
      },
      "locked": false,
      "traceOn": false,
      "userEmail": "mdm.user1@gmail.com",
      "simNumbers": [],
      "imeiCodes": [],
      "mobileNumbers": [],
      "createDate": 1422435030000,
      "lastModified": 1423216312000,
      "rooted": false,
      "roaming": false,
      "compliant": false
    },

Также, пожалуйста, предложите любой хороший вариант, если таковой имеется.

2 ответа

JMeter предоставляет JSON Path Extractor с помощью дополнительных модулей JMeter с установленными библиотеками

Я считаю, что это лучший способ достичь вашей цели.

См. Использование XPath Extractor в руководстве по JMeter (прокрутите вниз до главы "Разбор JSON") для получения инструкций по установке плагина и некоторых примеров запросов JSON Path.

Ваш вопрос специфичен для JMeter, но я считаю, что на самом деле это регулярное выражение Json Path. Например, в SoapUI это можно сделать с помощью

$.deviceResponseList[?(@.status=='PENDING')].id

Возможно, это может помочь

Другие вопросы по тегам