2014-09-30 4 views
11

Ho alcuni oggetti JSON più complessi delle rappresentazioni JSON degli oggetti java che ho. Ho metodi che costruiscono questi oggetti JSON e vorrei tornare e consumarli direttamente. Io uso la libreria org.json per costruire i miei JSON. Potrei far funzionare il metodo GET restituendo l'oggetto JSON come String. È questo il modo corretto per farlo?Produzione e consumo di oggetti JSON personalizzati in Spring Servizi RESTful

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

Ora voglio sapere come si consuma un oggetto JSON? Come una stringa e convertirla in un oggetto 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(); 
    } 

È questo il modo corretto per andare sul mio problema? Sono un novizio, così cortesemente indicare tutto ciò che può essere fatto meglio. Nota: non voglio restituire POJO.

risposta

15

penso che usando la libreria jackson si può fare qualcosa di simile qui di seguito.

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

ho di gran lunga l'alternativa di utilizzare Jackson con Spring MVC dal momento che non dovete preoccuparvi della serializzazione e deserializzazione degli oggetti/JSON-JSON/oggetto. Ma se vuoi ancora il processo mi piace usare gson di google.

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

Problemi correlati