刚刚将 Jackson 从 1.9 升级到 2.1,并立即注意到 @(JsonProperty@field)
注释已损坏。请注意 Scala 案例类的特殊 @field
。这是一个示例:
case class Watcher(
@(JsonProperty@field)("guid")
@(RiakKey@field)
val guid: String,
@(JsonProperty@field)("socialNetwork")
val socialNetwork: String, // instragram, twitter
)
当我从数据库中提取一个序列化为 JSON 的 Watcher 时,Jackson 去反序列化它并抛出异常:
com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field "guid" (class com.domain.SocialStreamService.models.Watcher), not marked as ignorable (0 known properties: ])
既然这在 1.9
中有效,我假设有些东西已经改变了。有人知道问题的原因吗?谢谢!
最佳答案
这是由命名空间问题和我使用的 Jerkson(它仍然引入 1.x 作为依赖项,因此不会引发编译器错误)这一事实引起的。为了解决这个问题,我不得不将命名空间从 com.codehaus
更改为 com.fasterxml
。
与此同时,有一个遗留内省(introspection)器供需要的人使用:https://github.com/Laures/jackson-legacy-introspector
关于java - Scala 从 1.9 到 2.1 中的 Jackson 注释被破坏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15255101/