从 JSON 数组中提取 (JMeter)

extract from a JSON array (JMeter)

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

我尝试使用具有类似行的 json 路径提取器:$..[?(@.beschikbaar == 'true')].beginDate 但是由于我有限的 regex/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
        },

你可以试试这个

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

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

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

进行测试

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

不要对 JSON 数据使用正则表达式,JMeter 提供了 JSON Extractor designed to work with JSON data via JSON Path Language,因此您应该能够通过以下查询获得 "beginDate":

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

演示:

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