我有一个JSON响应,我想从中提取“交易ID”值,例如(3159184),并在下一个采样器中使用它。有人可以给我正则表达式以提取相同的值。我一直在寻找一些解决方案,但似乎没有用
{
"lock_release_date": "2021-04-03T16:16:59.7800000+00:00",
"party_id": "13623162",
"reservation_id": "reserve-1-81b70981-f766-4ca7-a423-1f66ecaa7f2b",
"reservation_line_items": [
{
"extended_properties": null,
"inventory_pool": "available",
"lead_type": "Flex",
"line_item_id": "1",
"market_id": 491759,
"market_key": "143278|CA|COBROKE|CITY|FULL",
"market_name": "143278",
"market_state_id": "CA",
"product_name": "Local Expert",
"product_size": "SOV30",
"product_type": "Postal Code",
"reserved_quantity": 0,
"transaction_id": 3159174
}
],
"reserved_by": "user1@abc.com"
}
这就是我在Jmeter中尝试的
答案 0 :(得分:1)
答案 1 :(得分:1)
如果您真的想要正则表达式,则类似于:
"transaction_id"\s?:\s?(\d+)
演示:
其中:
\s?
代表一个可选的空格-这就是为什么您的表达式不起作用的原因\d+
代表一个数字有关更多详细信息,请参见JMeter用户手册的Regular Expressions一章。
请注意,使用正则表达式解析JSON并不是最好的主意,请考虑使用JSON Extractor。它允许使用简单的JsonPath查询从JSON提取“有趣的”值,这些查询更易于创建/读取,并且更加健壮和可靠。相关的JSON路径查询为:
$.reservation_line_items[0].transaction_id
答案 2 :(得分:0)
上面提取的最简单的正则表达式为:
transaction_id”:(。+)
其中:
(。+?)可用于在找到第一个实例后停止查找。
即?使前面的量词变得懒惰,从而使其匹配的字符尽可能少。默认情况下,量词是贪婪的,并且将匹配尽可能多的字符。