Saltar al contenido

Convertir JsonNode en POJO

Hacemos una verificación completa cada uno de los artículos de nuestro espacio con el objetivo de enseñarte siempre la información veraz y certera.

Solución:

En Jackson 2.4, puede convertir de la siguiente manera:

MyClass newJsonNode = jsonObjectMapper.treeToValue(someJsonNode, MyClass.class);

donde jsonObjectMapper es un jackson ObjectMapper.


En versiones anteriores de Jackson, sería

MyClass newJsonNode = jsonObjectMapper.readValue(someJsonNode, MyClass.class);

Esto debería funcionar:

mapper.readValue(fileReader, MyClass.class);

Digo debería porque estoy usando eso con un StringNo un BufferedReader pero aún debería funcionar.

Aquí está mi código:

String inputString = // I grab my string here
MySessionClass sessionObject;
try {
    ObjectMapper objectMapper = new ObjectMapper();
    sessionObject = objectMapper.readValue(inputString, MySessionClass.class);

Aquí está la documentación oficial para esa llamada: http://jackson.codehaus.org/1.7.9/javadoc/org/codehaus/jackson/map/ObjectMapper.html#readValue(java.lang.String, java.lang.Class)

También puede definir un deserializador personalizado cuando crea una instancia del ObjectMapper: http://wiki.fasterxml.com/JacksonHowToCustomDeserializers

Editar: acabo de recordar algo más. Si su objeto entrante tiene más propiedades que el POJO tiene y solo quiere ignorar los extras que querrá configurar esto:

    objectMapper.configure(DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIES, false);

O obtendrá un error de que no puede encontrar la propiedad para establecer.

Si está utilizando org.codehaus.jackson, esto ha sido posible desde 1.6. Puede convertir un JsonNode en un POJO con ObjectMapper#readValue: http://jackson.codehaus.org/1.9.4/javadoc/org/codehaus/jackson/map/ObjectMapper.html#readValue(org.codehaus.jackson.JsonNode, java.lang.Class)


    ObjectMapper mapper = new ObjectMapper();
    JsonParser jsonParser = mapper.getJsonFactory().createJsonParser(""foo":"bar"");
    JsonNode tree = jsonParser.readValueAsTree();
    // Do stuff to the tree
    mapper.readValue(tree, Foo.class);

Tienes la opción de añadir valor a nuestro contenido dando tu veteranía en las críticas.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *