我正在尝试利用动态产生的价值。
我的有效载荷如下:
{
"payload": [
{
"questionDefinitionId": "jRs6zAh3GGt3G8tL9SzUrS8SiXyg6EirSElv3VRpX_Q=",
"questionText": "What was your childhood nickname?",
"languageCode": "en",
"questionNumber": 1,
"disabled": false
},
{
"questionDefinitionId": "pmyZ4excucJBuFvSPCr6yIvO74vZS8DUNPx0GYVR57E=",
"questionText": "What is your favorite team?",
"languageCode": "en",
"questionNumber": 2,
"disabled": false
},
{
"questionDefinitionId": "awE_x8cXHcc0uhJ7lgtjzX1NtgA0IQBBWu7iDbVqW-k=",
"questionText": "What is the name of your favorite childhood friend?",
"languageCode": "en",
"questionNumber": 1,
"disabled": false
},
{
每次执行时,这一代都是不同的。
我需要获取:jRs6zAh3GGt3G8tL9SzUrS8SiXyg6EirSElv3VRpX_Q =,它是questionNumber:1的questionDefinitionId值,但始终在Json文件的不同位置生成
但是每次他们的订单在长列表中都位于不同的位置时。
答案 0 :(得分:3)
您的有效负载对我来说似乎是JSON对象,在这种情况下,选择JSON Extractor更有意义,这将更易于实现/读取/支持/等。
例如,您可以使用questionDefinitionId
Filter Operator来获得questionText
属性值,其中What was your childhood nickname?
是==
,例如:
$.payload[?(@.questionText == 'What was your childhood nickname?')].questionDefinitionId
演示:
如果您想将questionDefinitionId
为questionNumber
的{{1}}修改为如下所示的JSON路径表达式:
1
但是在您的示例中,有2个数字为1的问题
有关该概念的更多信息,请参见API Testing With JMeter and the JSON Extractor。
答案 1 :(得分:1)
尝试此正则表达式:
(?<="questionDefinitionId": ")(.+?)(?=")