5

如何将带下划线的 json 映射到案例类中的 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 的值

4

2 回答 2

10

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

因此,对于一年后遇到此问题的任何人,将 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)
于 2015-07-16T09:25:54.493 回答
0

目前,我认为唯一的选择是使用反引号或变换函数。请参阅http://json4s.org/的提取值部分。

最好的祝福

于 2014-08-07T13:42:39.803 回答