我的实体对象有一些带有公共(public) getter 和 setter 的私有(private)字段,还有一个没有 get 或 set 的私有(private)列表,因为我想在将项目添加到列表之前检查它们。
看起来像这样:
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);
}
}
现在我想序列化这个类,包括将列表发送到我的前端,但显然私有(private)字段被忽略。
解决方案是一个单独的 DTO,但这是我想避免的大量样板代码。那么我如何告诉我的 RestController/Jackson 序列化我的私有(private)字段(列表)?
最佳答案
对于序列化,您只需要添加 getter。添加 getter 不会干扰您在将项目添加到列表之前对其进行验证的目标。
此外,如果您愿意,您还可以添加一个看起来像这样的 setter (这样项目仍然会被验证)
public void setMoreData(List<MoreData> data){
data.forEach(this::addMoreData);
}
另一种选择是像你说的那样制作 DTO。
关于java - Spring 休息 Controller : serialize private fields,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49561935/