从 JSON 结构中获取 Double

Get Double from JSON structure

我已经更新了一个 JSON 库,但我无法提取我想要的值。

JSON 看起来像这样:

{
  "k1": {
    "k2 : {
      "k3" : 123
    }
  }
}

以前,这是成功的:

(parse(json) \ "k1" \ "k2" \ "k3").extract[Double]

成功了,现在不行了。现在我得到了例外:

org.json4s.package$MappingException: Do not know how to convert JArray(List(JInt(123))) into double

我尝试使用 compact(render(parse(json) \ "k1" \ "k2" \ "k3")),但这给了我字符串 [123],这并不是我真正想要的。如何直接将值提取为双精度值?

在这里使用 \ 访问器是不正确的,因为它递归地遍历 JSON 并提取它遇到的任何 "k1",产生 JArray,因此是错误。

您应该使用仅访问 JSON 对象的一个​​直接嵌套键的 \,或者您的代码中的 extract[List[Double]]