使用 scala 解析 json 对象,其中键以数字开头
parse json object where keys start with a number using scala
我想使用 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]
问题是我无法使用以数字开头的参数定义大小写 class。避免这种情况的最佳方法是什么?
您可以简单地将变量名括在反引号中:
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 进行了测试。
我想使用 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]
问题是我无法使用以数字开头的参数定义大小写 class。避免这种情况的最佳方法是什么?
您可以简单地将变量名括在反引号中:
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 进行了测试。