0

Web サービスから JSON 応答を受信して​​います。これは、テストの実行時にJMeterを使用して簡単に解析できます。私たちが最近発見した問題は、JSON オブジェクトのフィールドが常に同じ順序ではないということです。したがって、正規表現は壊れます。

私たちが試した解決策は次のとおりです。

1.) JSON パス エクストラクタ(jp@gc から):
これはかなりクールで、必要な要素を選択できます。問題は、null値がある場合にまったく読み取れないことです。

2.)次に、変数を初期値に設定するBeanShellプリプロセッサを追加してnull、条件に達したときに適切に実行されるようにしました。このアプローチの問題点は、いったん に設定するとnull、値が JSON パス エクストラクタによって選択された場合、何も変更されないことです。

これを機能させる他の方法について何か考えがある人はいますか? ご不明な点や説明が必要な場合はお知らせください。

4

1 に答える 1

0

代わりに、テストケースの1つで行った方法を次に示します。

- 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 に答える