Scala:将JSON解析为case类,并使用注释JsonGetter进行重写

Scala:将JSON解析为case类,并使用注释JsonGetter进行重写,json,scala,jackson,annotations,Json,Scala,Jackson,Annotations,我有一个JSON,我正在使用scala Jackson对象映射器构建它,并将其传递给case类 case class RequestJson( @(JsonGetter @field)("app_token")token:String, id: String,) { require(StringUtils.isNotBlank(id), "id argument cannot be blank")

我有一个JSON,我正在使用scala Jackson对象映射器构建它,并将其传递给case类

    case class RequestJson( @(JsonGetter @field)("app_token")token:String,
                                            id: String,)  {
require(StringUtils.isNotBlank(id), "id argument cannot be blank")
    }
我原以为JsonGetter应该用
app\u令牌替换“
token
” 和生成的JSON

{
  "app_token" : "myToken",
  "id" : "123"
}
但我明白了

{
      "token" : "myToken",
      "id" : "123"
}

它将与register DefaultScalaModule一起工作,并将未知属性上的FAIL作为false

案例类代码段:

import com.fasterxml.jackson.annotation.JsonGetter
import scala.annotation.meta.field

case class RequestJson(@(JsonGetter @field)("app_token") token: String, id: String) {}
import com.fasterxml.jackson.databind.{DeserializationFeature, ObjectMapper}
import com.fasterxml.jackson.module.scala.DefaultScalaModule

val mapper = new ObjectMapper()
mapper.registerModule(DefaultScalaModule)
mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false)
mapper.configure(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY, true)

val request = RequestJson("mytoken", "123")
val str = mapper.writeValueAsString(request)
println(str)
//{"app_token":"mytoken","id":"123"}
映射程序代码段:

import com.fasterxml.jackson.annotation.JsonGetter
import scala.annotation.meta.field

case class RequestJson(@(JsonGetter @field)("app_token") token: String, id: String) {}
import com.fasterxml.jackson.databind.{DeserializationFeature, ObjectMapper}
import com.fasterxml.jackson.module.scala.DefaultScalaModule

val mapper = new ObjectMapper()
mapper.registerModule(DefaultScalaModule)
mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false)
mapper.configure(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY, true)

val request = RequestJson("mytoken", "123")
val str = mapper.writeValueAsString(request)
println(str)
//{"app_token":"mytoken","id":"123"}