我有以下简单类:
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"])
答案 0 :(得分:40)
你混合了不同版本的杰克逊。
请注意,您从JsonIgnoreProperties
(版本1.x)导入org.codehaus.jackson.annotate
当您使用ObjectMapper
(版本2.x)中的com.fasterxml.jackson.databind
时。
答案 1 :(得分:5)
尝试使用上一个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
答案 2 :(得分:0)
它对我没有任何上述答案,我找到了一个解决方法,我重新初始化了对象和值(复制了对象)。
答案 3 :(得分:0)
我找到了解决方案。 尝试添加
@JsonSerialize(include= JsonSerialize.Inclusion.NON_EMPTY)
关于您的课程
@JsonSerialize(include= JsonSerialize.Inclusion.NON_EMPTY)
class ResponseModel {
//your properties here
@JsonIgnoreProperties("messageList","contactList","sender")
var contactList= ArrayList<ContactModel>()
}
那将解决您的问题伙伴。