在Spring RESTful服务中生产和使用自定义JSON对象 [英] Producing and consuming custom JSON Objects in Spring RESTful services

查看:62
本文介绍了在Spring RESTful服务中生产和使用自定义JSON对象的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I have some JSON Objects that are more complex than the JSON representations of the java objects I have. I have methods that build these JSON Objects and I would like to return and consume these directly. I use org.json library to build my JSONs. I could get the GET method working by returning the JSON Object as a String. Is this the correct way to go about it?

@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对象?

Now I want to know how do I consume a JSON Object? As a string and convert it to a JSON Object?

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

Is this the correct way to go about my problem? I am a novice, so kindly point out anything that can be done better. Please note: I do not want to return POJOs.

推荐答案

我认为,使用杰克逊库,您可以执行以下操作.

I think using jackson library you can do something like below.

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

这篇关于在Spring RESTful服务中生产和使用自定义JSON对象的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆