【问题标题】:Try to convert json4s values into integers尝试将 json4s 值转换为整数
【发布时间】:2014-07-17 05:49:50
【问题描述】:

我有随机的 JSON 字符串,其中包含字符串值,但它们实际上是数字,但我无法知道它们在进入我的系统时可能是什么字段。

例如:

{
   "some_key":"1234",
   "another_key":{
      "sub_key":"4243",
      "a_string":"this is a valid string and should not be converted"
   }
}

有谁知道尝试使用 json4s 将 json 值转换为整数的简单方法?

【问题讨论】:

    标签: json scala json4s


    【解决方案1】:

    想通了。这段代码正是我需要的:

    private def convertNumbers(json: JValue) =
      json.transformField {
        case JField(k, v) ⇒ k → (v match {
          case s: JString ⇒ Try(JInt(s.s.toInt)).getOrElse(s)
          case o          ⇒ o
        })
      }
    

    【讨论】:

      【解决方案2】:

      很遗憾,由于这些键被编码为字符串,因此您需要对其进行转换。所以,你可以这样做:

      val json = parse("""{some_key":"1234"}""")
      Try((json \ "some_key").values.toString.toInt) match {
        case Success(i) => JInt(i)
        case Failure(i) => s
      }
      

      如果可以转换为 Int,则返回 JInt,否则返回 JString

      【讨论】:

      • 谢谢,但不是我需要的。
      猜你喜欢
      • 1970-01-01
      • 2020-11-25
      • 1970-01-01
      • 2014-06-14
      • 2017-02-25
      • 1970-01-01
      • 2017-01-29
      • 2020-03-12
      • 1970-01-01
      相关资源
      最近更新 更多