【问题标题】:parse json object where keys start with a number using scala使用 scala 解析 json 对象,其中键以数字开头
【发布时间】:2018-02-20 19:31:56
【问题描述】:

我想使用 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]

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

【问题讨论】:

  • @SCouto 这是关于 scala,而不是 javascript
  • 我知道。这是一个错误。对不起。
  • 你用反引号试过了吗:case class VolumeUSDClass(`24h_volume_usd`: String)?回想一下,几乎任何东西都可以通过用反引号括起来转换为有效的 scala 标识符。

标签: scala jsonparser


【解决方案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 进行了测试。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-07-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-24
    • 1970-01-01
    • 1970-01-01
    • 2020-12-15
    相关资源
    最近更新 更多