【发布时间】:2014-09-30 22:09:16
【问题描述】:
我在 JAX-RS 环境中使用 Jackson 和 Jersey,并引用了一个外部库,我对它的影响有限。从这个外部库中,我使用了一些 dataholder/-model 作为返回类型,它有一个与 String.isEmpty()
相当的 isEmpty() 方法虽然序列化不是问题,但反序列化会导致以下异常,因为数据模型没有 setEmpty() 方法,Jackson 将 isEmpty() 方法解释为名为 empty 的字段。
Unrecognized field "empty" (class de.unirostock.sems.cbarchive.meta.omex.VCard), not marked as ignorable (4 known properties: "givenName", "organization", "email", "familyName"])
at [Source: org.glassfish.jersey.message.internal.EntityInputStream@36082d97; line: 1, column: 369]
将 @JsonIgnore 添加到外部库不是一种选择,因为这会导致巨大的开销,而且我更愿意不将数据持有者封装到另一个数据持有者中,而只是委托方法或在 JavaScript 中过滤字段。
还有其他可能迫使杰克逊忽略这个空“字段”吗?
【问题讨论】: