将封装的响应映射到 POJO

Map enveloped response into a 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

}

有没有一种无需先将数据对象存储到 Map 中即可执行此操作的方法?

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

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

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

您可能需要调整您的用户 class 以匹配 JSON 字符串。例如。您的用户 class 需要有一个 'data' 字段作为 List<Data> data;,其中 'Data' 是另一个 POJO。您可以在 'Data' pojo 中添加 "id"、"userName" 等字段。

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

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

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