在jmeter中,我有这个正则表达式提取器从响应JSON中提取customerId,以便在下一个请求中使用该customerId。 我跟随json:
{
"customerList":{
"Customer":{
"customerName":"Test1",
"id":"0215236",
"customerContactNo":"655659856"
},
"Customer":{
"customerName":"Test2",
"id":"99925236",
"customerContactNo":"7458622"
},
"Customer":{
"customerName":"Test3",
"id":"1521865",
"customerContactNo":"7984443613"
}
},
"productList":{
"product":{
"productName":"TestProduct1",
"id":"0215236"
},
"product":{
"productName":"TestProduct2",
"id":"452698"
},
"product":{
"productName":"TestProduct3",
"id":"14567892"
}
}
}
我想使用正则表达式提取每个客户的customerId
。
我正在尝试关注正则表达式:
\"customer\":\{.+\"customerId\":\"([0-9]+)\"
答案 0 :(得分:0)
在regex
中使用JSON
进行字段提取不是最好的主意。您应该考虑为您的语言使用native / build-in JSON解析器。由于您尚未提及您正在使用的语言,因此您可以在此链接中查看language的工具列表(位于页面底部)。另外,正如@Andy G所提到的,这不是有效的格式。
答案 1 :(得分:0)
为什么不去寻找"customerId":"(\d+)"
正则表达式:
参考文献:
请注意,大多数JSON实现都不允许重复对象,因此在同一级别的多个Customer
对象方面,它可能是应用程序中的错误。根据{{3}}
对象是零个或多个名称/值的无序集合 对,其中名称是字符串,值是字符串,数字, boolean,null,object或array。
其中unordered
表示密钥名称是唯一的。我建议您与应用程序开发人员提出这一点,如果它被视为错误并将被修复,您将能够使用JSON speficication而不是正则表达式
答案 2 :(得分:0)
此JSON无效,请在https://jsonchecker.com/中查看,您将获得:
https://jsonformatter.curiousconcept.com/处相同:
所以在尝试这样的提取之前修复JSON。