我的实体对象有一些带有公共getter和setter的私有字段,还有一个没有get或set的私有列表,因为我想在项目添加到列表之前检查它们。
看起来像这样:
public class MyData{
private String name;
private String description;
private List<MoreData> moreData;
public String getName(){...}
public String setName(){...}
public String getDescription(){...}
public String setDescription(){...}
public void addMoreData(MoreData data){
// validate Data
moreData.add(data);
}
}
现在我想将这个包括列表的类序列化为json以将其发送到我的前端,但显然私有字段被忽略。
解决方案将是一个单独的DTO,但这是我想避免的许多样板代码。那么我如何告诉我的RestController / Jackson序列化我的私人字段(列表)?
答案 0 :(得分:1)
对于序列化,您只需要添加getter。添加getter不会影响您在将项目添加到列表之前验证项目的目标。
另外,如果你想要你也可以添加一个看起来像这样的setter(所以这些项目仍然会被验证)
public void setMoreData(List<MoreData> data){
data.forEach(this::addMoreData);
}
另一个选择是制作像你说的DTO。