将包络响应映射到POJO

时间:2017-02-01 17:23:15

标签: java spring http pojo envelope

我正在尝试映射以下回复:

{
    "data": {
        "id": "1574083",
        "username": "snoopdogg",
        "full_name": "Snoop Dogg",
        "profile_picture": "http://distillery.s3.amazonaws.com/profiles/profile_1574083_75sq_1295469061.jpg",
        "bio": "This is my bio",
        "website": "http://snoopdogg.com",
        "counts": {
            "media": 1320,
            "follows": 420,
            "followed_by": 3410
        }
}

进入一个对象,我只想检索用户名,full_name和id字段。

Ex:类似于:

public class User{
    String id;
    String username;
    String full_name;

   // getters + setters

}

有没有办法在不先将数据对象存储到Map中的情况下执行此操作?

3 个答案:

答案 0 :(得分:2)

使用Jackson API。应该很简单:

ObjectMapper mapper = new ObjectMapper();
User user = mapper.readValue(jsonString, User.class); //jsonString is your actual json string.

您可能希望调整User类以匹配JSON字符串。例如。您的用户类需要有一个&#39;数据&#39;字段为List<Data> data;其中&#39;数据&#39;是另一个POJO。您可以在&#39;数据&#39;中添加&#34; id&#34;,&#34; userName&#34;等字段。 POJO。

答案 1 :(得分:0)

您可以手动执行此操作,例如regexp或使用任何JSON库,如Jackson,GSON等。

答案 2 :(得分:0)

使用GSON非常简单。假设您的json存储在String jsonString变量中。

Gson gson = new Gson();
YourObject = gson.fromJson(jsonString, YourObject.class);

虽然我不确定会发生什么,因为您的jsonString没有名为User的密钥。但是,如果您首先从data中提取jsonString并将您的POJO命名为Data,这应该会有用。