2016-12-19 7 views
1

jsonファイルからオブジェクトの配列を取得しようとしていますが、問題があります。RestAssured JsonPath:jsonからjsonオブジェクトをフィルタリングする方法

path.get("wgcTournaments.items") 

アイテム内のすべてのアイテム(item0、item1、item2 ...)を取得するために使用するパスは何ですか?

どうすればいいですか?

JSON例

{ 
    "wgcTournaments": { 
    "items": { 
     "jcr:primaryType": "nt:unstructured", 
     "item0": { 
     "jcr:primaryType": "nt:unstructured", 
     "test": "test", 
     "test1": "test1" 
     }, 
     "item1": { 
     "jcr:primaryType": "nt:unstructured", 
     "test": "test", 
     "test1": "test1" 
     }, 
     "item2": { 
     "jcr:primaryType": "nt:unstructured", 
     "test": "test", 
     "test1": "test1" 
     }, 
     "item3": { 
     "jcr:primaryType": "nt:unstructured", 
     "test": "test", 
     "test1": "test1" 
     } 
    } 
    } 
} 

アイテムからアイテムをフィルタリングするための最良の方法は、オブジェクトが、私は、JSONのパスでそれを行う方法を理解していません。

+0

を見つけることができますGpath詳細を使用しましたMyClassオブジェクトの配列を取得しようとしましたが、JSONにはオブジェクトがあり、オブジェクトの配列はありません。 – AntoineB

+0

AntoineB私はitem0、item1、item2などの配列をオブジェクトの配列のように見えるようにしたい – Roman

+0

私の答えの最後の部分を見てみましょう。 – AntoineB

答えて

0

オブジェクトをオブジェクトの配列に逆シリアル化しようとしています。あなたのコードまたはあなたのJSON(おそらく)が間違っています。

あなたは配列としてitemsをデシリアライズしたい場合は、あなたのJSONは以下のようになります。

path.getObject("wgcTournaments.items", MyClass.class) 

{ 
    "wgcTournaments": { 
    "items": [ 
     { 
      "jcr:primaryType": "nt:unstructured", 
      "item0": {}, 
      "item1": {}, 
      "item2": {}, 
      "item3": {} 
     } 
    ] 
    } 
} 

あなたのJSONが正しければそうでない場合は、次の行を使用してJSONをデシリアライズする必要があり

EDIT:あなたの編集後は、これはあなたが望むもののようだ:

の場合あなたのJSONが正しく、実際に配列が必要な場合、私はそれぞれitemXがキーであり、{}の対応する値であると仮定します。この場合、JSONで連想配列を使用できないことを知っておく必要があります。連想配列がオブジェクトに変換されるため、カスタム解を使用して逆シリアル化する必要があります。

+0

jsonパスのアイテムからすべてのアイテムを取得する方法を教えてください。 wgcTournaments.items.findAll {item ...} – Roman

+0

のようなものかもしれません。直接入手することはできません。あなたはデータを扱うコンバータのようなものを宣言することができるかもしれませんが、それを行う方法を探す必要があります。私はあまり経験はありません。 – AntoineB

+0

申し訳ありません編集した質問jsonパスが必要です。変換する方法ではありません。 – Roman

0

最後に私は私の質問の解決策を見つけました。

あなたがアイテムからアイテムを取得したい場合は、

path.getObject("wgcTournaments.items*. 
find{it.key.startsWith('item')}.value",ItemClass[].class); 

(注)この1つのJSONのパスを使用する必要があります。 それはRestAssuredと、彼はあなたはあなたがここに http://docs.groovy-lang.org/latest/html/documentation/#_gpath

関連する問題