Spring RestController:序列化私有字段

时间:2018-03-29 17:26:01

标签: java spring rest spring-restcontroller spring-rest

我的实体对象有一些带有公共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序列化我的私人字段(列表)?

1 个答案:

答案 0 :(得分:1)

对于序列化,您只需要添加getter。添加getter不会影响您在将项目添加到列表之前验证项目的目标。

另外,如果你想要你也可以添加一个看起来像这样的setter(所以这些项目仍然会被验证)

public void setMoreData(List<MoreData> data){
    data.forEach(this::addMoreData);
}

另一个选择是制作像你说的DTO。