【问题标题】:Spring RestController: serialize private fields [duplicate]Spring RestController:序列化私有字段[重复]
【发布时间】:2018-09-08 18:11:16
【问题描述】:

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

【问题讨论】:

  • 感谢@Dherik,链接问题中的类注释解决了我的问题。

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


【解决方案1】:

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

此外,如果您愿意,您还可以添加一个看起来像这样的设置器(这样项目仍然会被验证)

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

另一种选择是像你说的那样做一个 DTO。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-02-02
    • 2015-11-07
    • 2016-09-16
    • 1970-01-01
    • 2015-02-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多