2

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 パスでそれを行う方法がわかりません。

4

2 に答える 2

1

最後に、私の質問に対する解決策を見つけました。

アイテムからアイテムを取得する場合は、この 1 つの json パスを使用する必要があります

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

注: RestAssured であり、彼は Gpath を使用しています。詳細については、 http: //docs.groovy-lang.org/latest/html/documentation/#_gpath を参照してください。

于 2016-12-19T15:10:20.910 に答える
0

オブジェクトをオブジェクトの配列に逆シリアル化しようとしています。コードまたは JSON (ほとんどの場合) が間違っています。

配列としてデシリアライズする場合items、JSON は次のようになります。

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

それ以外の場合、JSON が正しい場合は、次の行を使用して JSON を逆シリアル化する必要があります。

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

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

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

于 2016-12-19T13:08:42.360 に答える