使用Scala Jackson进行JSON反序列化?

Sum*_*wal 1 scala jackson jackson-module-scala

我是scala的新手并试图将我的json映射到一个对象.我找到了jackson-scala-module但无法弄清楚如何使用它.一个小例子可能会有所帮助.

val json = { "_id" : "jzcyluvhqilqrocq" , "DP-Name" : "Sumit Agarwal" , "DP-Age" : "15" , "DP-height" : "115" , "DP-weight" : "68"}
Run Code Online (Sandbox Code Playgroud)

我想把它映射到 Person(name: String, age: Int, height: Int, weight: Int)

直到现在我一直在尝试使用它:

import com.fasterxml.jackson.databind.ObjectMapper

Val mapper = = new ObjectMapper();    
val data = mapper.readValue(json, classOf[Person])
Run Code Online (Sandbox Code Playgroud)

我正在使用的依赖:

"com.fasterxml.jackson.module" % "jackson-module-scala_2.11" % "2.8.4"
Run Code Online (Sandbox Code Playgroud)

我错过了什么吗?

编辑:

[error] (run-main-4) com.fasterxml.jackson.databind.JsonMappingException: Can not construct instance of models.Person: no suitable constructor found, can not deserialize from Object value (missing default constructor or creator, or perhaps need to add/enable type information?)
Run Code Online (Sandbox Code Playgroud)

Myk*_*iuk 7

为了使其工作,您需要使用对象映射器注册DefaultScalaModule:

val mapper = new ObjectMapper()
mapper.registerModule(DefaultScalaModule)
Run Code Online (Sandbox Code Playgroud)

此外,您需要更新案例类并向Jackson提供字段名称绑定的属性名称:

case class Person(@JsonProperty("DP-Name") name: String, 
                  @JsonProperty("DP-Age") age: Int, 
                  @JsonProperty("DP-height") height: Int, 
                  @JsonProperty("DP-weight") weight: Int)
Run Code Online (Sandbox Code Playgroud)