我有来自api的json响应,结构如下:
{
"countPerPage": 20,
"totalCount": 401,
"currentPage": 1,
"totalPage": 21,
"data": [
{
"id": 1,
"catId": 12,
"dogId": 12,
"creationDate": "2022-01-03 12:29:38",
"comment": "Some comment"
},
{
"id": 2,
"catId": 13,
"dogId": 16,
"creationDate": "2022-01-08 11:14:25",
"comment": "Some comment"
},
...
]
}
像这样
{
"countPerPage": 20,
"totalCount": 226,
"currentPage": 3,
"totalPage": 12,
"data": [
{
"id": 1,
"parentId": 12,
"firstName": "John",
"lastName": "Doe",
"creationDate": "2022-01-03 12:29:38",
"age": 25
},
{
"id": 1,
"parentId": 12,
"firstName": "Michael",
"lastName": "Finder",
"creationDate": "2022-01-08 11:14:25",
"age": 24
},
...
]
}
和其他具有相同结构的产品。
如果我为这样的人创建响应java类
@Data
@JsonIgnoreProperties(ignoreUnknown = true)
public class PersonResponse{
@JsonProperty("id")
private int id;
@JsonProperty("parentId")
private int parentId;
@JsonProperty("firstName")
private String firstName;
@JsonProperty("lastName")
private String lastName;
@JsonProperty("creationDate")
private String creationDate;
@JsonProperty("age")
private int age;
}
@Data
@JsonIgnoreProperties(ignoreUnknown = true)
public class PersonWithCount {
@JsonProperty("countPerPage")
private int countPerPage;
@JsonProperty("totalCount")
private int totalCount;
@JsonProperty("currentPage")
private int currentPage;
@JsonProperty("totalPage")
private int totalPage;
@JsonProperty("data")
private List<PersonResponse> data;
}
对于这样的动物
@Data
@JsonIgnoreProperties(ignoreUnknown = true)
public class AnimalResponse{
@JsonProperty("id")
private int id;
@JsonProperty("catId")
private int catId;
@JsonProperty("dogId")
private int dogId;
@JsonProperty("creationDate")
private String creationDate;
@JsonProperty("comment")
private String comment;
}
@Data
@JsonIgnoreProperties(ignoreUnknown = true)
public class AnimalWithCount {
@JsonProperty("countPerPage")
private int countPerPage;
@JsonProperty("totalCount")
private int totalCount;
@JsonProperty("currentPage")
private int currentPage;
@JsonProperty("totalPage")
private int totalPage;
@JsonProperty("data")
private List<AnimalResponse> data;
}
所有作品都很好。但是我如何使用像泛型这样的通用的东西,因为不要复制和粘贴每个具有相同数据的时间类,其中只更改了最后一个字段?
我期待这样的事情,但它并没有工作
@Data
@JsonIgnoreProperties(ignoreUnknown = true)
public class DataWithCount<T> {
@JsonProperty("countPerPage")
private int countPerPage;
@JsonProperty("totalCount")
private int totalCount;
@JsonProperty("currentPage")
private int currentPage;
@JsonProperty("totalPage")
private int totalPage;
@JsonProperty("data")
private List<T> data;
}
填充变量:
personListWithCount = ObjectMapperCreator.objectMapperCreator().readValue(personResponse.getBody().asPrettyString(), PersonListWithCount.class);
也许我做错了什么?
帮助回答其他问题(杰克逊 - 使用泛型类反序列化):
mapper.readValue(jsonString, new TypeReference<DataWithCount<AnimalResponse>>() {});
第二种方式也有效
JavaType type = mapper.getTypeFactory().constructParametricType(DataWithCount.class, AnimalResponse.class);
DataWithCount<AnimalResponse> data = mapper.readValue(json, type);
谢谢@Nick
我有以下Java POJO 如何实现在游戏对象列表中确定重复字段的功能? 例如,当两个游戏有相同的开始日期? 我以前使用过,但仅在根据最早日期等对对象进行排序时使用过,但它能否用于对重复项进行排序?
我正在尝试对List的字段求和并返回值。我想为此使用流,但我对流不熟悉,不确定流是否可以完成此操作。这是我尝试过的,但我认为语法不正确。 上下文的相关类结构。 获取总价和单价方法
假设我们有: 我们有一个实例列表,即
我的软件上有一个对象列表,我想通过一个公共字段进行排序,例如: 我可以对列表进行排序以使ID=1的对象只出现一次吗?在这种情况下,列表中只剩下ID=1的第一个对象,例如: 我怎样才能做到这一点?
我有一个包含员工姓名的字符串列表。
我的RESTendpoint返回包含对象字段的响应对象。序列化一切正常,但当我开始为此API编写客户端时,我遇到了反序列化问题。我根据一些关于使用Jackson进行多态序列化的问题/文章制作了这个示例代码。它演示了这个问题。 我的期望(以及我对列表的期望 我现在拥有的Object: 但我需要反序列化除动物列表之外的其他类型的对象。救命啊!