2017-04-17 14 views
0

私は条件付きで次のサンプルJSONレスポンスから要素の値を抽出しようとしている:のJMeter - JSONパス抽出 - 条件付き選択

{ 
    "books": [ 
    { 
     "title": "book 1 title", 
     "author": { 
      "firstName": "author01", 
      "lastName": "abc" 
     } 
    } 
    { 
     "title": "book 2 title", 
     "author": { 
      "firstName": "author02", 
      "lastName": "xyz" 
     } 
    } 
    ] 
} 

私はlastNameの== xyzの本のタイトルを選択します。ここで私は使用の式: $ .books [?(。@ author.lastName == 'XYZ')]

が、それはあなたのJSONのパス式が正しい[]

おかげ

答えて

1

を返します。デモ:

{ 
    "books": [ 
    { 
     "title": "book 1 title", 
     "author": { 
     "firstName": "author01", 
     "lastName": "abc" 
     } 
    }, <-----------------------------you need the comma here 
    { 
     "title": "book 2 title", 
     "author": { 
     "firstName": "author02", 
     "lastName": "xyz" 
     } 
    } 
    ] 
} 

JSON Path Conditional Select

は、しかし、あなたのJSONに問題があります

応答が有効なJSONに解決できない場合は、代わりにRegular Expression Extractorを使用する必要があります。それがある場合 - ダブルあなたのJSONのパス式をチェックしても、下式JMeter's JSON Path Extractor Plugin - Advanced Usage Scenarios

+0

@Dimitri、悪いです。私はカンマを忘れてしまった。また、私の表現が$ .books [?(@。author.lastName == 'xyz')]であることを意味しました。タイトル(繰り返しは申し訳ありませんが、私の質問は編集できません。私の表現の考え方は次のとおりです。 1. $ .books - >本の配列を取得 2.?() - > fileter 3.?(@。author.lastName == 'xyx') - - >著者オブジェクトの姓を選択し、xyzと比較します。ただし、動作しません。 ?()のように見えるのは、最初のレベルのオブジェクトだけです。 IOW?(@。title == 'book 2 title')は問題ありません。とにかく、ありがとう、 – hdang

0

てみてくださいチェックアウトする価値:

$ .books [(@ author.lastName == 'XYZ' を。)?]タイトル