使用scala解析密钥以数字开头的json对象

时间:2018-02-20 19:31:57

标签: scala jsonparser

我想使用Scala解析以下JSON对象:

val result = """{"24h_volume_usd": "9097260000.0"}"""

通常我使用:

import net.liftweb.json._
case class VolumeUSDClass(24h_volume_usd:String) //<- problem 24h_volume_usd does not work
val element = parse(result)
element.extract[CryptoDataClass]

问题在于我无法使用以数字开头的参数定义案例类。避免这种情况的最佳方法是什么?

1 个答案:

答案 0 :(得分:1)

您可以简单地将变量的名称括在反引号中:

implicit val formats = net.liftweb.json.DefaultFormats
val result = """{"24h_volume_usd": "9097260000.0"}"""
import net.liftweb.json._
case class VolumeUSDClass(`24h_volume_usd`:String)
val element = parse(result)
val vusdcl = element.extract[VolumeUSDClass]
println(vusdcl)

回想一下,如果将其封装在反引号中,几乎所有内容都可以转换为有效的Scala标识符。甚至像

这样的奇怪的东西
val `]strange...O_o...stuff[` = 42
println(`]strange...O_o...stuff[`)

的工作原理。

使用"net.liftweb" %% "lift-json" % "3.2.0"和Scala 2.11测试该示例。