使用json在under_score和camelCase格式之间进行选择



如何将json与下划线映射到case类中的camelCase字段?

import org.json4s.jackson.JsonMethods.parse
import org.json4s.DefaultFormats
object Testing {
  implicit val formats = DefaultFormats.withBigDecimal
  def test = {
    val json = parse("""{"some_field":"a value"}""")
    json.extract[ThingDTO]
  }
}
case class ThingDTO(someField:String)

我得到的错误:

someField没有可用的值转换成java.lang.String

它似乎没有被记录(或者至少我在寻找它时错过了它),但是现在有一个camelizeCase方法,您可以在解析的Json上使用。我在源代码中偶然发现了它,用我正在使用的一些蛇形Json试了一下,你瞧,得到了camelised键名。

所以对于任何在一年后遇到这个问题的人,将OP的代码更改为以下将有效:

import org.json4s._
import org.json4s.DefaultFormats
import org.json4s.native.JsonMethods._
object Testing {
  implicit val formats = DefaultFormats.withBigDecimal
  def test = {
    val json = parse("""{"some_field":"a value"}""").camelizeKeys
    json.extract[ThingDTO]
  }
}
case class ThingDTO(someField:String)

目前,我认为唯一的选择是使用反刻度或转换函数。参见http://json4s.org/提取值一节。

最新更新