将封装的响应映射到 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
.
我正在尝试映射以下响应:
{
"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
.