java - Spring 休息 Controller : serialize private fields

标签 java spring rest spring-restcontroller spring-rest

我的实体对象有一些带有公共(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/

相关文章:

Java Web 应用程序。定位图像的问题

java - Java中通过super访问方法和变量

java - 为什么这个初学者java程序有错误

java - HTTP 403 禁止 - Auth JASS Spring Camel

java - 如何关闭正在运行的套接字线程?

java - 如何将 spring 应用程序上下文添加到 java 运行时以用于 eclipse 中的集成测试?

java - 如何向我的 Spring REST 项目发出正确的 POST 请求

web-services - 使用 Facebook OAuth 保护 REST API

c# - 使用 ServiceStack Rest-API 下载文件

http - 嵌套模型的类似于 Restful 的 CRUD 操作 url 模式