Scala 使用json4s在under_分数和camelCase格式之间进行选择

Scala 使用json4s在under_分数和camelCase格式之间进行选择,scala,json-deserialization,json4s,Scala,Json Deserialization,Json4s,如何将带下划线的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映射到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


目前,我认为唯一的选择是使用backticks或Transform函数。请参见“提取值”部分中的


致以最诚挚的问候

它似乎没有被记录下来(或者至少我在寻找它时错过了它),但是现在有了一个
camelizeCase
方法,您可以在解析的Json上使用它。我在源代码中偶然发现了它,用我正在使用的一些snake-case 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)