2016-08-10 9 views
0

Jmeter:&を抽出する方法BeanShellプリプロセッサを使用してレスポンスからaccountIDを変数に格納しますか?このためにJSONや正規表現を使用できますか?Jmeter:BeanShellプリプロセッサでJSON応答を解析し、変数に格納する

私の回答のように見えるものをいくつか:

{ 
    "address":{ 
     "street1":"6550 Vallejo Street", 
     "street2":"", 
     "city":"Emeryville", 
     "state":"CA", 
     "zipcode":"98456", 
     "country":"Uk" 
    }, 
    "timezone":"US/Pacific-New", 
    "reference":"fe_qa001", 
    "token":"ns7h4rqVZegSZG6yZls6", 
    "login":"[email protected]", 
    "accountId":-9223372036762408565, 
    "firstName":"qa029", 
    "lastName":"svcqa", 
    "email":"[email protected]", 
    "component":[ 
     { 
     "type":1, 
     "reference":"12-1", 
     "version":"1", 
     "base":"Plastic", 
     "zipcode":"94556", 
     "bedsize":"high", 
     "bed":false, 
     "componentId":0, 
     "code":"P5", 
     "sku":"abcd", 
     "serial":"1234", 
     "purchaseDate":1372723200000, 
     "chamber":2 
     } 
    ] 
} 

私はJMeterのに初心者です。それで誰も私をここで助けることができます。要件は、下記の応答からアカウントIDを厳密にし、BeanShellプリプロセッサを使用して変数に格納するようなものです。

+0

私は、次のコードを試みたが、それは動作しません: 関連の構成は次のようになりますString jsonString = prev.getResponseDataAsString(); JsonObject accountId = JsonObject.readFrom(jsonString); JsonArray accountId = accountId.get(1).asObject()。get( "accountId")。asString(); vars.put( "accountId_BSH"、accountId); –

答えて

2

最小限-json.jarはJMeterの中にあることを確認し、私はどこにこのコードを手に入れたのか分からないが、それはそれはminimal-jsonライブラリを使用しているように見える奇妙な方法でそれを使用するため、

  1. あなたはあなたが必要なすべての輸入

を持っアップ

  • の.jarを選択するのJMeterを再起動したクラスパス
  • また、あなたのコードは、最小限の-JSON-0.9.4.jarで正しく動作するようには思えません、 君はあなたはJSR223 PostProcessor and Groovy languageを使用して同じ容易に行うことができます

    import com.eclipsesource.json.JsonObject; 
    
    String jsonString = prev.getResponseDataAsString(); 
    JsonObject accountId = JsonObject.readFrom(jsonString); 
    vars.put("accountId_BSH",String.valueOf(accountId.getLong("accountId",0L))); 
    

    :としてそれを変更する必要があります。 GroovyにはJSONサポートが組み込まれているので、.jarsを追加する必要はありません。参考Groovyのコード:

    import groovy.json.JsonSlurper 
    
    def jsonSlurper = new JsonSlurper(); 
    def response = jsonSlurper.parseText(prev.getResponseDataAsString()); 
    vars.put("accountId_BSH", response.accountId.toString()); 
    

    そしておそらくJMeter 3.0以降で利用可能JSON Path PostProcessorを使用している最良の方法。

    • 変数名:accountId_BSH
    • JSONパス式:$.accountId

    JSON Path Post

  • 関連する問題