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

2022-09-02 10:07:58

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

@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。


答案 1

我认为使用杰克逊图书馆,你可以做如下事情。

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

答案 2

您可以使用jackson lib,jackson允许使用spring mvc转换到/从json转换。

  1. @ResponseBody JSON 格式进行春季配置
  2. 杰克逊2.0与春天3.1