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

Это не помогло мне ни в одном из приведенных выше ответов, я нашел обходное решение, которое я повторно инициализировал объект и значения (скопировал объект).