Producing and consuming custom JSON Objects in Spring RESTful services
Solution 1
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);
}
Solution 2
I much rather the alternative to use Jackson with Spring mvc since you dont have to worry of the serialization and deserialization of your objects/json-json/object. But if you still want to the process I like to use gson of google.
http://www.javacreed.com/simple-gson-example/
Solution 3
You can use jackson lib, jackson allows convert to/from json using spring mvc.
Related videos on Youtube
user592748
Updated on July 09, 2022Comments
-
user592748 almost 2 years
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 theGET
method working by returning the JSON Object as aString
. 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(); }
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(); }
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.