【发布时间】:2014-04-03 06:27:20
【问题描述】:
我正在尝试使用 jackson 反序列化 json 对象并遇到异常
`com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException:
Unrecognized field "mobile" (class mypack.JacksonPhoneBuilder), not
marked as ignorable (2 known properties: , "phoneType", "value"]) at
[Source: %filelocation%; line: 8, column: 24] (through reference
chain:
mypack.JacksonAddressListBuilder["addresses"]->mypack.JacksonAddressBuilder["phones"]->mypack.JacksonPhoneBuilder["mobile"])`
这是对象:
{
"addresses": [
{
...
"phones": {
"mobile": "+01234567890"
}
},
...
]
}
电话.java:
@JsonDeserialize(builder = JacksonBuilder.class)
public class Phone {
protected String value;
protected Type type;
// setters and getters
}
我读过关于 jackson 枚举反序列化的信息,但是有普通的枚举 并且有使用地图。显然,“移动”领域不是 在模型中表示,但它是一个枚举值,所以我该如何反序列化 是吗?
【问题讨论】:
-
这一定是您的 JacksonPhoneBuilder 中的错误。它是您的自定义解串器吗?您的地址模型类是什么?我试图将“电话”节点读取到 Map
并且它有效。枚举已正确反序列化。 -
@LukaszWiktor 我已经更新了这个问题。看起来是这样,但我没有得到,它应该如何正常工作。
-
一个地址是否只有一部电话?您的 json 对象“电话”字段表明可能有很多,而您的地址类有一个用于单个电话的字段。