如何在反序列化时存储我在地图中不关心的额外字段?

时间:2017-06-06 13:58:02

标签: scala scalatra

这就是我想要做的事:Jackson deserialize extra fields as map,但我还没有让它发挥作用。

这是我要反序列化的类:

class MyClass(
           @JsonProperty val name: String,
           @JsonProperty val age: Int,
           @JsonIgnore val other: mutable.HashMap[String, Any] = mutable.HashMap()
         ) {

  @JsonAnyGetter def getOther: mutable.HashMap[String, Any] = other

  @JsonAnySetter def setOther(key: String, value: Any): Unit = {
    other.put(key, value)
  }
}

现在输入可能是:

{
    "name": "Lisa",
    "age": 42
}

一切都很顺利。但输入也可能是这样的:

{
    "name": "Lisa",
    "age": 42
    "extraProperty": 123
}

在这种情况下,我想将除name / age之外的所有内容(例如此处extraProperty)存储到地图中,以便我可以将其传递给下一个服务。但它不起作用:other地图中没有任何内容。我也尝试过@(JsonAnyGetter@field) val other: mutable.HashMap[String, Any] = mutable.HashMap()(我在这里找到https://github.com/FasterXML/jackson-module-scala/issues/308),但它没有用。

有没有人让这个与Scalatra一起工作?

0 个答案:

没有答案