0

我们正在接收来自 Web 服务的 JSON 响应——我们可以在运行测试时使用JMeter轻松解析它。我们最近发现的问题是 JSON 对象中的字段并不总是相同的顺序。因此,正则表达式会中断。

以下是我们尝试过的解决方案:

1.) JSON 路径提取器(来自 jp@gc):
这很酷,可以让您选择所需的元素。问题是当有一个null值时,它根本不会读取它。

2.)然后我们尝试添加一个BeanShell -预处理器来将变量设置为null初始值,这样当它达到条件时它会被正确执行。这种方法的问题在于,一旦设置为null,如果 JSON 路径提取器选择了一个值,它就不会更改为任何值。

有没有人对我可以让它工作的其他方式有任何想法?如果您有任何问题或需要澄清,请告诉我。

4

1 回答 1

0

这是我在其中一个测试用例中所做的替代方法。

- HTTP Sampler
 - BSF Post processor with javascript language
    - script in BSF goes like this
      - log.info("processing image index response");
if ("" != prev.getResponseDataAsString()) { //if response is not empty process it
    eval( 'var indexJSON = ' + prev.getResponseDataAsString() ); //get the respnose JSON string as javascript var and operate on it as you like
    vars.putObject("indexJSON", indexJSON);

    var next_slide_timestamp=indexJSON[0].timestamp;
    vars.put("next_slide_timestamp", "0");

    var maxSlides=indexJSON.length;
    vars.put("maxSlides", maxSlides);
} else { //if response is empty simply initialize all var to 0
    vars.put("currentThumb", "0");
    vars.put("currentSlide", "0");
    vars.put("next_slide_timestamp", "0");
    vars.put("maxSlides", "0");
                          log.info("index time : empty response , setting defaults to zero");
}
于 2013-07-19T04:20:27.340 回答