Jmeter正则表达式提取器获取JSON结构

时间:2017-03-08 11:21:44

标签: json regex jmeter

我需要正则表达式,可以从Jmeter正则表达式提取器中的序列中提取JSON结构

[message1]

    {
        "headers": {
            "messageId": "a0923b4c-33f6-4b0c-be53-be17332d51fa"
        },
        "payload": {
            "maxIdlePeriod": 1800
        },
        "status": {
            "code": "ok",
            "errorMessages": []
        }
    }


[message2]


    {
        "headers": {
            "messageId": "46fb53f0-c3de-4270-bad5-6f504af197f9"
        },
        "payload": {
            "termsUrl": "https://termsUrl.com",
            "termsVersion": "8201"
        }
    }

我已经尝试过在其他堆栈线程{(?:[^ {}] |(?R))}中找到的这个regexp,但JAVA中似乎不支持递归 - 表达式无效:{(? :[^ {}] |(?R))}序列(?R ...)无法识别

提前致谢

1 个答案:

答案 0 :(得分:0)

所以你似乎有一个不同JSON"文件"的序列。在单个响应中,对吧?

好吧,如果你正在寻找最简单的方法 - 为什么不用单根来拥抱它们​​,那么你就拥有一个带有元素列表的JSON,这样你就能够使用JSON提取器后处理器?

如果你坚持使用正则表达式提取器 - 我可能会建议先尝试切换多行模式(使用(?:m)),然后使用类似(^\{\n$.+^\}\n$)的内容 - 免责声明:没有经过测试!,特别是对于多线模式中的开始/结束线锚点的位置 - 但是我希望你有了这个想法(同样有必要再次检查你是否有\n\r\n,也许,与中央.+一起玩,使其更具体。)

或选择JSR223 / Beanshell后处理器并以自定义方式解析响应。