从 JSON 数组中提取 (JMeter)
extract from a JSON array (JMeter)
从以下数组中捕获的最佳方法是什么?
- 我只需要捕获 ANY 'beginDate' 的值,例如:2017-05-01T08:30:00 可能是下面示例中的有效值
- 我需要确保 'beschikbaar' = TRUE 我要拍摄的日期
我尝试使用具有类似行的 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 文章以获得更详细的解释和更多示例。
从以下数组中捕获的最佳方法是什么?
- 我只需要捕获 ANY 'beginDate' 的值,例如:2017-05-01T08:30:00 可能是下面示例中的有效值
- 我需要确保 'beschikbaar' = TRUE 我要拍摄的日期
我尝试使用具有类似行的 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 文章以获得更详细的解释和更多示例。