Scala:将JSON解析为case类,并使用注释JsonGetter进行重写
我有一个JSON,我正在使用scala Jackson对象映射器构建它,并将其传递给case类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")
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"}