在Spring RESTful服务中生成和使用自定义JSON对象

我有一些JSON对象比我拥有的java对象的JSON表示更复杂。 我有构建这些JSON对象的方法,我想直接返回并使用它们。 我使用org.json库来构建我的JSON。 我可以通过将JSON对象作为String返回来获得GET方法。 这是正确的方法吗?

 @RequestMapping(value = "/getjson", method = RequestMethod.GET, produces="application/json") @ResponseBody public String getJson() { JSONObject json = new JSONObject(); JSONObject subJson = new JSONObject(); subJson .put("key", "value"); json.put("key", subJson); return json.toString(); } 

现在我想知道如何使用JSON对象? 作为字符串并将其转换为JSON对象?

  @RequestMapping(value = "/post", method = RequestMethod.POST, produces="application/json", consumes="application/json") @ResponseBody public String post(@RequestBody String json) { JSONObject obj = new JSONObject(json); //do some things with json, put some header information in json return obj.toString(); } 

这是解决我问题的正确方法吗? 我是一个新手,所以请指出可以做得更好的任何事情。 请注意:我不想退回POJO。

我认为使用jackson库你可以做类似下面的事情。

 @RequestMapping(value = "/getjson", method = RequestMethod.GET, produces="application/json") @ResponseBody public String getJson() { //your logic ObjectMapper mapper = new ObjectMapper(); return mapper.writeValueAsString(json); } @RequestMapping(value = "/post", method = RequestMethod.POST, produces="application/json", consumes="application/json") @ResponseBody public String post(@RequestBody String json) { POJO pj = new POJO(); ObjectMapper mapper = new ObjectMapper(); pj = mapper.readValue(json, POJO.class); //do some things with json, put some header information in json return mapper.writeValueAsString(pj); } 

你可以使用jackson lib,jackson允许使用spring mvc转换为json。

  1. Spring配置@ResponseBody JSON格式
  2. Jackson 2.0 with Spring 3.1

我非常宁愿使用Jackson和Spring mvc,因为你不必担心你的对象/ json-json / object的序列化和反序列化。 但如果你仍然想要这个过程,我喜欢使用谷歌的gson。

http://www.javacreed.com/simple-gson-example/