2

Jmeter 2.8 で正規表現を使用して、JSON 応答からいくつかの値を抽出しています。

応答は次のようになります。

{
    "key": "prod",
    "id": "p2301d",
    "objects": [{
            "id": "102955",
            "key": "member",
            ...
         }], 
    "features":"product_features"
}

[{....}]1 つの正規表現の間のテキストを除くすべてを取得しようとしています。私はこれを試しまし"key":([^\[\{.*\}\],].+?)たが、常に他の値を取得しています[{...}](この例では: member )

手がかりはありますか?
ありがとう。

4

3 に答える 3

2

jmeter (JSON パス アサーション、JSON パス エクストラクタ、JSON フォーマッタ)用のカスタムJSONユーティリティ (この場合はJSONパス エクストラクタ)を使用できるとします。

  1. ATLANTBH jmeter-components を jmeter に追加します: https://github.com/ATLANTBH/jmeter-components#installation-instructions
  2. JSON パス エクストラクタ (ポスト プロセッサ コンポーネント リストから) を子として、処理する json 応答を返すサンプラーに追加します。

    ここに画像の説明を入力

    (ダミーサンプラーを使用して応答をエミュレートしました。元のサンプラーがあります)

    ここに画像の説明を入力

    抽出する値と同じ数のエクストラクターを追加します (この場合は 3 つ: "key"、"id"、"features")。

  3. 各エクストラクタを構成します。抽出された値を格納する変数名と、対応する値を抽出するJSONPath クエリを定義します。

    • 「キー」の場合:$.key
    • 「ID」の場合: $.id
    • 「機能」の場合:$.features
  4. さらにスクリプトでは、jmeter 変数 (「名前」フィールドの JSON パス エクストラクタ設定で指定された変数名) を使用して、抽出された値を参照${jsonKey}でき${jsonID}ます${$.features}

    ここに画像の説明を入力

おそらくそれは最適な方法ではないかもしれませんが、うまくいきます。

于 2013-01-10T16:33:07.807 に答える
2

私の問題に対する私の解決策は、.json の値ではなく、必要な値だけを抽出できるように、JSON をオブジェクトに変換することでした{...}

ここで私のコードを見ることができます:

var JSON={"itemType":"prod","id":"p2301d","version":"10","tags":[{"itemType":"member","id":"p2301e"},{"itemType":"other","id":"prod10450"}],"multiPrice":null,"prices":null};

//Transformation into an object: 
obj = eval(JSON );

//write in the Jmeter variable "itemtype", the content of obj.itemType:prod
vars.put("itemtype", obj.itemType);

詳細については、http: //www.havecomputerwillcode.com/blog/?p=500を参照してください。

于 2013-01-14T22:47:19.417 に答える
1

一般的な解決策:デモ

正規表現:(\[{\n\s*(?:\s*"\w+"\s*:\s*[^,]+,)+\n\s*}\])

説明、各行の前にスペースがあり、一致する前にそれらを消費する必要があるため、正しく必要なスペースを消費しないため、正規表現が実際に機能していません。{charをエスケープする必要はありません。

于 2013-01-10T11:46:35.543 に答える