JsonIgnoreProperties не работает
У меня есть следующий простой класс:
import org.codehaus.jackson.annotate.JsonIgnoreProperties;
@JsonIgnoreProperties({ "thirdField" })
public class Message {
private TypeA type;
private String producer;
//Getters and Setters
}
в моем тестовом классе
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);
}
}
Все, что я пытаюсь сделать, это преобразовать указанную выше строку json в класс Message и игнорировать "thirdField". Но я продолжаю получать
com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field "thirdField" (class Message), not marked as ignorable (2 known properties: , "type", "producer"])
Ответы
Ответ 1
Вы смешивали разные версии Джексона.
Обратите внимание, что вы импортируете JsonIgnoreProperties
из org.codehaus.jackson.annotate
(версия 1.x)
в то время как вы используете ObjectMapper
из com.fasterxml.jackson.databind
(версия 2.x).
Ответ 2
Попробуйте использовать последнюю версию Jackson (2.4):
import com.fasterxml.jackson.annotation.JsonIgnoreProperties
@JsonIgnoreProperties({"id"})
Здесь вы можете найти пример, где он реализуется с использованием версии 2.4:
http://www.ibm.com/developerworks/java/library/j-hangman-app/index.html
Ответ 3
Это не помогло мне ни в одном из приведенных выше ответов, я нашел обходное решение, которое я повторно инициализировал объект и значения (скопировал объект).