1

我正在尝试映射以下响应:

{
    "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
        }
}

放入我只想检索用户名、全名和 id 字段的对象中。

例如:类似:

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

   // getters + setters

}

有没有办法做到这一点,而不必首先将数据对象存储到地图中?

4

3 回答 3

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。您可以在“数据”pojo 中添加“id”、“userName”等字段。

于 2017-02-01T17:41:48.573 回答
0

您可以通过例如正则表达式手动完成,也可以使用任何 JSON 库,如 Jackson、GSON 等。

于 2017-02-01T17:31:18.497 回答
0

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

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

虽然我不确定会发生什么,因为您jsonString没有名为User. 但是,如果您首先data从您jsonString的 POJO 中提取并命名,这应该可以工作Data

于 2017-02-01T17:43:59.767 回答