使用 Jackson 为 Dynatable 自定义 JSON 视图

Customize JSON view with Jackson for Dynatable

我正在开发 Spring 引导应用程序。在 html 视图中,我对 RestController 进行了 ajax 调用,其中 returns 自定义实体列表:

@Controller
public class MyController {
    @ResponseBody
    @JsonView(View.MyView.class)
    public List<CustomEntity> getEntities() {
        ...
    }
}

这工作正常,正如预期的那样,我得到以下结构:

{
    "id": "1",
    "name": "Test1"
},
{
    "id": "2",
    "name": "Test2"
}

在视图中,我想将它与 Dynatable 一起使用。我的问题来了。我需要以下结构:

{
  "records": [
    {
      "id": "1",
      "name": "Test1"
    },
    {
      "id": "2",
      "name": "Test2"
    }
  ],
  "queryRecordCount": 2,
  "totalRecordCount": 2
}

有没有一种方法可以使用基于模板的 jackson(或任何其他框架)生成 JSOn 视图,这样我就可以将数据与 Dynatable 一起使用,如果可以,怎么做?

提前致谢,

斯蒂芬

您可以创建一个包装器来为您完成此操作...

class DyntableResponse<T> {
  private List<T> records;
  public List<T> getRecords() { return records; }
  public void setRecords(final List<T> records) { this.records = records; }
  public int getQueryRecordCount() { return records.size(); }
  public int getTotalRecordCount() { return records.size(); }
}

然后 return 它来自你的 RestController...

@Controller
public class MyController {
    @ResponseBody
    @JsonView(View.MyView.class)
    public DyntableResponse<CustomEntity> getEntities() {
       final DyntableResponse<CustomEntity> resp = new DyntableResponse<>();
       resp.setRecords(...); // Your finder here.
       return resp;
    }
}

这是未经尝试的,但应该接近。