从JSON数组中提取(JMeter)

时间:2017-04-20 14:00:31

标签: json regex jmeter jsonpath

从以下数组中捕获的最佳方法是什么?

  • 我只需要捕捉任何' beginDate'的值,例如:2017-05-01T08:30:00可能是以下示例中的有效值
  • 我需要确保' beschikbaar'我正在捕捉
  • 的日期= TRUE

我尝试使用类似行的json路径提取器: $ .. [?(@。beschikbaar ==' true')]。beginDate 但是我正面临着由于我有限的正则表达式/ json路径知识,我无法解决的语法错误

示例数组是;

{

"data":
[
    [
        {
            "beginDate":"2017-05-01T08:00:00",
            "eindDate":null,
            "beschikbaar":false
        },
        {
            "beginDate":"2017-05-01T08:15:00",
            "eindDate":null,
            "beschikbaar":false
        },
        {
            "beginDate":"2017-05-01T08:30:00",
            "eindDate":"2017-05-01T10:30:00+02:00",
            "beschikbaar":true
        },
        {
            "beginDate":"2017-05-01T08:45:00",
            "eindDate":"2017-05-01T10:45:00+02:00",
            "beschikbaar":true
        },
        {
            "beginDate":"2017-05-01T09:00:00",
            "eindDate":"2017-05-01T11:00:00+02:00",
            "beschikbaar":true
        },
        {
            "beginDate":"2017-05-01T09:15:00",
            "eindDate":"2017-05-01T11:15:00+02:00",
            "beschikbaar":true
        },
        {
            "beginDate":"2017-05-01T09:30:00",
            "eindDate":"2017-05-01T11:30:00+02:00",
            "beschikbaar":true
        },
        {
            "beginDate":"2017-05-01T09:45:00",
            "eindDate":"2017-05-01T11:45:00+02:00",
            "beschikbaar":true
        },
        {
            "beginDate":"2017-05-01T10:00:00",
            "eindDate":"2017-05-01T12:00:00+02:00",
            "beschikbaar":true
        },

2 个答案:

答案 0 :(得分:2)

不要对JSON数据使用正则表达式,JMeter提供JSON Extractor旨在通过JSON Path Language处理JSON数据,因此您应该能够使用以下查询获取“beginDate”: p>

$..[?(@.beschikbaar == true)].beginDate

演示:

JMeter Conditional JSON

查看JMeter's JSON Path Extractor Plugin - Advanced Usage Scenarios文章,了解更详细的解释和更多示例。

答案 1 :(得分:1)

你可以试试这个

(?s)\{.*?\"beginDate\":\"([^{]*?)\"[^{]+\"beschikbaar\":true.*?\}

(?s)是单行修饰符,可使.与换行符匹配

您可以在http://www.regexplanet.com/advanced/java/index.html

进行测试

Template设置为$1$表示使用第一组