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 String
No 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.