如何从动态产生中获取价值

时间:2018-11-08 15:08:28

标签: regex jmeter

我正在尝试利用动态产生的价值。

我的有效载荷如下:

{

"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文件的不同位置生成

但是每次他们的订单在长列表中都位于不同的位置时。

2 个答案:

答案 0 :(得分:3)

您的有效负载对我来说似乎是JSON对象,在这种情况下,选择JSON Extractor更有意义,这将更易于实现/读取/支持/等。

例如,您可以使用questionDefinitionId Filter Operator来获得questionText属性值,其中What was your childhood nickname?==,例如:

$.payload[?(@.questionText == 'What was your childhood nickname?')].questionDefinitionId

演示:

enter image description here

如果您想将questionDefinitionIdquestionNumber的{​​{1}}修改为如下所示的JSON路径表达式:

1

但是在您的示例中,有2个数字为1的问题

有关该概念的更多信息,请参见API Testing With JMeter and the JSON Extractor

答案 1 :(得分:1)

尝试此正则表达式:

 (?<="questionDefinitionId": ")(.+?)(?=")