使用Jackson为Dynatable自定义JSON视图

时间:2016-02-15 17:17:40

标签: java json spring dynatable

我正在开发一个Spring Boot应用程序。在html视图中,我对一个RestController进行ajax调用,它返回一个自定义实体列表:

@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的数据,如果是的话,怎么做?

提前致谢,

斯蒂芬

1 个答案:

答案 0 :(得分:2)

您可以创建一个为您执行此操作的包装器...

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(); }
}

然后从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;
    }
}

这是未经验证的,但应该接近。