Estoy tratando de publicar JSON-Object dinámico como
{ "name":[ { "key":"myKey1", "value":"myValue1" }, { "key":"myKey2", "value":myValue2 }, .... ] }a Spring RESTful Web Service pero quiero obtener JSON-Object como JSON-Object no como String mi código es:
@RequestMapping(path ="/hi", method = RequestMethod.POST, consumes = "application/json") public Greeting hi(@RequestBody String jobject) { return new Greeting (100,jobject); }Dado que necesita pares clave-valor, puede hacer algo como a continuación: puede definir un POJO que contiene un mapa. Algo como a continuación:
@RequestMapping(value = "/get/{searchId}", method = RequestMethod.POST) public String search( @PathVariable("searchId") Long searchId, @RequestParam SearchRequest searchRequest) { System.out.println(searchRequest.getParams.size()); return ""; } public class SearchRequest { private Map<String, String> params; }Objeto de solicitud:
"params":{ "birthDate": "25.01.2011", "lang":"en" }¡Puede obtenerlo como String y convertirlo a json con JSON.parse o algo así! o puedes usar
@RequestMapping(path ="/test", method = RequestMethod.POST, consumes = "application/json") public myMethodehi(@RequestBody Pojo pojo) { }Cree una clase pojo correspondiente a su json.
public class MyPojo { private Name[] name; public Name[] getName () { return name; } public void setName (Name[] name) { this.name = name; } @Override public String toString() { return "ClassPojo [name = "+name+"]"; } } public class Name { private String value; private String key; public String getValue () { return value; } public void setValue (String value) { this.value = value; } public String getKey () { return key; } public void setKey (String key) { this.key = key; } @Override public String toString() { return "ClassPojo [value = "+value+", key = "+key+"]"; } }Puede usar algún convertidor de json a pojo en línea. Uso http://www.jsonschema2pojo.org/ Simplemente pegue json allí y haga clic en convertir.
Ahora, en lugar de una cadena, especifique su clase POJO, Spring hará la conversión por usted
@RequestMapping(path ="/hi", method = RequestMethod.POST, consumes = "application/json") public Greeting hi(@RequestBody MyPojo myPojo) { // return new Greeting (100,jobject); }