writevalueasstring serialize example java json spring jackson gson

java - serialize - Convertir mapa a JSON utilizando Jackson



objectmapper java (4)

Deberías preferir Object Mapper en su lugar. Aquí está el enlace para el mismo: Object Mapper - Spring MVC forma de Obect a JSON

¿Cómo puedo convertir un mapa a un JSON válido usando Jackson?

Lo estoy haciendo usando GSON de Google a través de un método REST Post de Spring Boot ...

Aquí está el servicio web RESTful:

import java.util.Map; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RestController; import com.fasterxml.jackson.core.JsonFactory; import com.fasterxml.jackson.core.JsonParser; import com.google.gson.Gson; @RestController @RequestMapping("/myservice") public class ValidationService { @RequestMapping(value="/validate", method = RequestMethod.POST) public void validate(@RequestBody Map<String, Object> payload) throws Exception { Gson gson = new Gson(); String json = gson.toJson(payload); System.out.println(json); } }

Entonces, cuando lo invoco usando esto:

curl -H "Accept: application/json" -H "Content-type: application/json" / -X POST -d ''{"name":"value"}'' http://localhost:8080/myservice/validate

Reciba lo siguiente para stdout (esto es exactamente lo que quiero):

{"name":"value"}

¿Hay una mejor manera de hacerlo utilizando Jackson en lugar de Gson de Google y / o lo estoy haciendo de la manera equivocada?


Puedes convertir Map to JSON usando Jackson de la siguiente manera:

Map<String,String> payload = new HashMap<>(); payload.put("key1","value1"); payload.put("key2","value2"); String json = new ObjectMapper().writeValueAsString(payload); System.out.println(json);


Si está utilizando jackson, es mejor que lo convierta directamente a ObjectNode.

//not including SerializationFeatures for brevity static final ObjectMapper mapper = new ObjectMapper(); //pass it your payload public static ObjectNode convObjToONode(Object o) { StringWriter stringify = new StringWriter(); ObjectNode objToONode = null; try { mapper.writeValue(stringify, o); objToONode = (ObjectNode) mapper.readTree(stringify.toString()); } catch (IOException e) { e.printStackTrace(); } System.out.println(objToONode); return objToONode; }


Usando jackson, puedes hacerlo de la siguiente manera:

ObjectMapper mapper = new ObjectMapper(); String clientFilterJson = ""; try { clientFilterJson = mapper.writeValueAsString(filterSaveModel); } catch (IOException e) { e.printStackTrace(); }