jackson - michael - JsonIgnoreProperties no funciona
michael jackson (3)
Tengo la siguiente clase simple:
import org.codehaus.jackson.annotate.JsonIgnoreProperties;
@JsonIgnoreProperties({ "thirdField" })
public class Message {
private TypeA type;
private String producer;
//Getters and Setters
}
en mi clase de prueba
import com.fasterxml.jackson.databind.MapperFeature;
import com.fasterxml.jackson.databind.ObjectMapper;
public class Test {
public void testMethd() {
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.configure(MapperFeature.USE_ANNOTATIONS, true);
Class<T> instanceType = Message.class;
String msgBody = "{/"producer/": /"clientApp/", /"type/": /"aType/", /"thirdField/": []}";
objectMapper.readValue(msgBody, instanceType);
}
}
Todo lo que estoy tratando de hacer es convertir la cadena json anterior en la clase de mensaje e ignorar el ''thirdField''. Pero sigo recibiendo
com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field "thirdField" (class Message), not marked as ignorable (2 known properties: , "type", "producer"])
Has mezclado diferentes versiones de Jackson. Tenga en cuenta que importa JsonIgnoreProperties
de org.codehaus.jackson.annotate
(versión 1.x) mientras usa ObjectMapper
de com.fasterxml.jackson.databind
(versión 2.x).
Intenta usar la última versión de Jackson (2.4):
import com.fasterxml.jackson.annotation.JsonIgnoreProperties
@JsonIgnoreProperties({"id"})
Aquí puede encontrar un ejemplo donde se implementa utilizando la versión 2.4: http://www.ibm.com/developerworks/java/library/j-hangman-app/index.html
No me funcionó ninguna de las respuestas anteriores, encontré una solución que reinicializaba el objeto y los valores (copié el objeto).