使用Spring MVC自定义JSON响应

时间:2016-08-07 04:38:13

标签: java json spring spring-mvc jackson

模型

public class Organisation {

    private String name;

    public Organisation() { }

    public Organisation(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

}

控制器

    @RequestMapping(method = RequestMethod.GET)
    public List<Organisation> getAll() {
        Organisation organisation = new Organisation("google");
        List<Organisation> organisations = new ArrayList<>();
        organisations.add(organisation);
        return organisations;
    }

这会给出这样的回应:

[
  {
    "name": "google"
  }
]

如果我们想要这样的事情怎么办?

{
  "data": [{
    "type": "organisations"
    "attributes": {
      "name": "google"
    }
  ]
}

那么如何自定义json。我知道Spring MVC默认使用Jackson将模型转换为JSON。有没有办法定制它。我正在尝试以JSONApi标准发送响应。也可以有人告诉如何在回复中创建链接

1 个答案:

答案 0 :(得分:2)

创建类:

public class Object1 {
   private List<Object2> data;

   public Object1() {
   }

   public Object1(List<Object2> data) {
      this.data = data;
   }
   //getters and setters
}

public class Object2 {

   private String type;
   private Object3 attributes;

   public Object2() {
   }

   public Object2(String type, Object3 attributes) {
      this.type = type;
      this.attributes = attributes;
   }
    //getters and setters
}

public class Object3 {
   private String name;

   public Object3(String name) {
      this.name = name;
   }

   public Object3() {
   }

    //getters and setters
}

现在你的控制器方法应该是:

@RequestMapping(method = RequestMethod.GET)
    public Object3 getAll() {
        List<Object2> data = new ArrayList<>();
        data.add(new Object2("organisations", new Object3("google")));

        return new Object1(data);
    }