29

私は POJO を持っていArtworkます。ListJSON 形式の HTTP 応答本文で RESTful Web サービスからこれらのオブジェクトを取得しています。返されたリストを分析する Rest Assured ベースのテストを作成しようとしています。コードは次のようになります。

Response response = get("/artwork");
List returnedArtworks = response.getBody().as(List.class)

問題は、返された JSON を として解析するために Rest Assured を取得できないことList<Artwork>です。代わりに、私はList<LinkedHashMap>. マップには適切な構造があります。つまり、Jackson によってArtworkオブジェクトにマップできますが、手動でマップすることは避けたいと思います。

次のように単一のオブジェクトをマップすると、モデルの JSON マッピングは問題ありません。

Artwork returnedArtwork = response.getBody().as(Artwork.class);

それは正常に動作します。

returnedArtworksとして入手できList<Artwork>ますか?

4

5 に答える 5

36

あなたはこれを行うことができます:

List<Artwork> returnedArtworks = Arrays.asList(response.getBody().as(Artwork[].class));

秘訣は、JSON をオブジェクトの配列にデシリアライズし (配列の JSON 文字列とリストに違いがないため)、配列をリストに変換することです。

于 2014-08-03T13:32:35.173 に答える
4

Google の Gson ライブラリを使用すると、簡単に解析してList<Artwork>. 以下のコードを試してください

Gson gson = new Gson();
List<Artwork> returnedArtworks = gson.fromJson(jsonStr, new TypeToken<List<Artwork>>(){}.getType());

//* where jsonStr is the response string(Json) receiving from your Restful webservice
于 2014-02-12T12:34:20.160 に答える