2017-07-04 1 views
2

jsonレスポンスから値を抽出し、その値を変数に代入して後続のリクエストで使用したい。私は以下のような動的変数と値を作成したいJsonレスポンスを抽出するダイナミック変数を作成して値を代入する

リクエスト1つのレスポンス

{ 
    "XXX":"Test Company 1", 
    "YYY":"Test Company 2", 
    "ZZZ":"Test Company 3" 
} 

Company_Name_1 = "Test Company 1" 
Company_Code_1 = "XXX" 
Company_Name_2 = "Test Company 2" 
Company_Code_2 = "YYY" 
Company_Name_3 = "Test Company 3" 
Company_Code_3 = "ZZZ" 

上記の変数は、以下のような後続のリクエストで使用します。

要求企業の

{ 
    "Date": "${MeetingDate}", 
    "StartTime": "${StartTime}", 
    "EndTime": "${EndTime}", 
    "InvestorsByDate": [{ 
     "Name": "${Company_Name_1}", 
     "Code": "${Company_Code_1}" 
    }, 
    { 
     "Name": "${Company_Name_2}", 
     "Code": "${Company_Code_2}" 
    }, 
    { 
     "Name": "${Company_Name_3}", 
     "Code": "${Company_Code_3}" 
    }] 
} 

総数が一定でない2パラメータには、そのは、連続的に変化します。だから私は、動的な値を取得し、それらを動的に作成された変数に割り当て、その後の要求でそれらを使用するコードを記述する必要があります。私はスクリプト作成に全く新しいです。この挑戦に直面するのを手伝ってください。あなたの助けは本当に感謝しています。

+0

リクエスト1からの応答は、常に構造的に同じですか? –

+0

私たちの選択に基づいてその変化は継続的にありません。私は正規表現エクストラクタを使い、-1を使ってすべての値を集めました。今私は変数を反復し、それらをRequest 2パラメータに追加したい。 –

答えて

0
  1. あなたは言語としてgroovyを持っているし、「スクリプト」領域に以下のコードを入れてCache compiled script if availableボックス
  2. にチェックを入れていることを確認し、最初の要求

  3. の子としてJSR223 PostProcesorを追加します。

    import groovy.json.JsonBuilder 
    import groovy.json.JsonSlurper 
    
    def companies = new JsonSlurper().parse(prev.getResponseData()) 
    def jsonBuilder = new JsonBuilder() 
    jsonBuilder { 
        "Date" vars.get('MeetingDate') 
        "StartTime" vars.get('StartTime') 
        "EndTime" vars.get('EndTime') 
        "InvestorsByDate" companies.collect { 
         [ 
          Name: it.getValue(), 
          Code: it.getKey() 
         ] 
        } 
    } 
    vars.put('requestBody', jsonBuilder.toPrettyString()) 
    log.info('Generated body: ' + vars.get('requestBody')) 
    
  4. 生成されたJSONペイロードをまたは${__V(requestBody)}として参照できるようになります。必要な場合は

デモ:

JMeter Generate JSON

参考文献:

0

@ドミトリTありがとう、それは非常に便利です、私は変更を行い、期待どおりに動作します。

import groovy.json.JsonBuilder 
import groovy.json.JsonSlurper 

    def companies = new JsonSlurper().parse(prev.getResponseData()) 
    def jsonBuilder = new JsonBuilder() 
    jsonBuilder {"InvestorsByDate"companies.collect{[IdString: it.getKey(),Name: it.getValue()]} 
    } 
    vars.put('InvestorsByDate', jsonBuilder.toString()) 
    vars.put('InvestorsByDate', vars.get('InvestorsByDate').substring(1)) 
    vars.put('InvestorsByDate', vars.get('InvestorsByDate').substring(0,vars.get('InvestorsByDate').length() - 1)) 

    log.info(vars.get('InvestorsByDate')) 

可能であれば、もう一度お手伝いが必要です。以下のように会社名を変更することは可能ですか?

"InvestorsByDate": [{ 
    "Name": "1. Company Name1", 
    "Code": "Company_Code_1" 
}, 
{ 
    "Name": "2. Company Name2", 
    "Code": "Company_Code_2" 
}, 
{ 
    "Name": "3. Company Name3", 
    "Code": "Company_Code_3" 
}] 

私は会社名と数字を連結したいと思います。 jsonビルダーで可能ですか?

+1

別の質問でこれを尋ねる必要があります。ありがとう! – Jahan

+0

ああ..私に通知してくれてありがとう。 –

関連する問題