2017-02-01 24 views
1

我试图映射以下回应:地图笼罩响应成POJO

{ 
    "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字段。

例:是这样的:

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

    // getters + setters 

} 

是否有这样做,而不必首先存储数据对象到地图的方法吗?

+0

将完整的'json'映射到对象并获取所需的字段有什么问题? – Arpit

回答

2

使用杰克逊的API。它应该很简单:

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

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

+1

此外,Jackson图书馆还会为您提供XML和CSV等对象映射器,如果这些是您可能需要的。 –

+1

超级,谢谢你VHS - 那就是诀窍。 – Dayna

0

您可以通过手工做的,例如,正则表达式或利用任何JSON库像杰克逊,GSON等

0

有了GSON,它非常简单。假设你的json存储在一个String jsonString变量中。

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

虽然我不知道会发生什么,因为你的jsonString没有一个叫User关键。但是,如果您首先从jsonString中提取data并将其命名为POJO Data,则该功能应起作用。