我正在开发一个 Spring 应用程序,并使用 Spring Webclient 对外部服务进行 REST 调用。结果,我有这个对象:
{
"error": 0,
"message": "",
"totalItems": 1,
"entities": [
[
{
"entityName": "Field 1",
"entityValue": "String value 1"
},
{
"entityName": "Field 2",
"entityValue": "Date Value 2 in dd-mm-yyyy format"
}
]
]
}
现在我想创建一个包含两个字段(字符串字段1和日期字段2)的DTO,并告诉mapstruct使用与entityName字段1相对应的entityValue填充field1,字段2也是如此。我如何在a中实现这一点聪明的方法?理想情况下,无需循环每个实体中的所有实体名称/实体值对。
现在我有两个 DTO 代表我的 REST 结果:
public class Wrapper {
private int error;
private String message;
private int totalItems;
private List<PairEntity> entities;
}
and
public class PairEntity {
private String entityName;
private String entityValue;
}
最佳答案
包含一点循环...
如果entityName
是唯一的,请将您的 dto 更改为使用 Map<String, String>
或Map<String, PairEntity>
(键=实体名称)而不是List<PairEntity>
。您需要一个自定义的 jackson 映射器或 gson,具体取决于正在使用的库...
或者创建一个新的 dto 并手动将列表转换为 map 。
然后在mapstruct中创建自定义映射并从映射中获取值。
https://www.baeldung.com/java-list-to-map
关于java - 从 JSON 到 DTO 的智能映射结构映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72866597/