我正在使用https://github.com/json4s/json4s。如何将JDouble
,JBool
等值转换为相应的Scala数据类型 - Double
和Boolean
?
更新:
scala> (json \ "status")
res8: org.json4s.JValue = JBool(false)
scala> (json \ "status").extract[Boolean]
<console>:16: error: No org.json4s.Formats found. Try to bring an instance of org.json4s.Formats in scope or use the org.json4s.DefaultFormats.
(json \ "status").extract[Boolean]
答案 0 :(得分:5)
正如Read Me中提到的那样,你是怎么做的......:)
import org.json4s._
import org.json4s.native.JsonMethods._
implicit val formats = DefaultFormats
val json = parse("""
{
"mydouble" : 3.14,
"isPie" : true
}
""")
val dbl = (json \ "mydouble").extractOpt[Double]
//> dbl : Option[Double] = Some(3.14)
val bool = (json \ "isPie").extractOpt[Boolean]
//> bool : Option[Boolean] = Some(true)
答案 1 :(得分:2)
查看代码(https://github.com/json4s/json4s/blob/7c70e9664232ffee4acf24c8969424cd37957736/ast/src/main/scala/org/json4s/JsonAST.scala)表明您只需要调用JValue.values
方法。
更新:从您的评论中看来,您的JDouble
似乎并非如此,并希望提取其Double
值(同样提取{{1}来自Boolean
。相反,你有一个JDouble
并希望将其值提取为JValue
或Double
(事先知道预期的类型)。
这可以使用Boolean
完成,如您链接到的 README 中所述:
extract
或:
(json \ "status").extract[Double]
有关更多示例,另请参阅此测试文件: https://github.com/json4s/json4s/blob/master/tests/src/test/scala/org/json4s/ExtractionExamplesSpec.scala