JMeter Regex - 从json响应代码中提取精确值

时间:2016-06-10 13:12:34

标签: json regex jmeter

我需要从json响应中为特定的“WarehouseService”类型的部门提取"id":的值:

{"id":21,"active":true,"activities":[{"id":229,"activityId":61,"activityName":"Restack","customFieldIds":[8,10],"separateInvoice":false,"unitId":42,"unitName":"Pallet","locationActivityId":0,"incentiveGroupId":null},{"id":228,"activityId":101,"activityName":"Double Roll Off","customFieldIds":[8,9],"separateInvoice":true,"unitId":45,"unitName":"Put","locationActivityId":0,"incentiveGroupId":null},{"id":227,"activityId":129,"activityName":"Container","customFieldIds":[8,5,9],"separateInvoice":false,"unitId":64,"unitName":"Item","locationActivityId":0,"incentiveGroupId":null},{"id":226,"activityId":298,"activityName":"Truck Wash","customFieldIds":[7,6],"separateInvoice":false,"unitId":44,"unitName":"Bottle","locationActivityId":0,"incentiveGroupId":null},{"id":225,"activityId":299,"activityName":"Fueling","customFieldIds":[4,8],"separateInvoice":false,"unitId":190,"unitName":"Percentage","locationActivityId":0,"incentiveGroupId":null}],"comCheckServiceCharge":30.00,"creditCardServiceCharge":1.00,"locationId":15,"name":"SCORS","nameId":53,"selectionRates":[],"serviceRates":[],"type":"WarehouseServices","unloadingRates":[]},

我正在寻找的值等于此字符串中的“21”。 问题是响应代码中还有许多其他部分包含相同的参数字符串但具有不同类型的部门。 你能帮助我为这种情况编写正确的正则表达式吗?所以我可以匹配最后计算“WarehouseService”的确切字符串? 我试图使用外观,但它没有帮助。

1 个答案:

答案 0 :(得分:2)

我不建议使用正则表达式来解析JSON。最近发布的JMeter 3.0带有JSON Path PostProcessor,用于处理JSON数据。相关配置如下:

  • 变量名称:id
  • JSON路径表达式:$..[?(@.type == 'WarehouseServices')].id
  • 其他字段可能会保留原样

您可以使用View Results Tree侦听器的JSON Path Tester模式来测试您的JSON Path查询,而不必重新执行测试。

JSON Path Tester

参考文献: