2

我正在使用https://github.com/json4s/json4s。如何将它的值转换为相应JDoubleJBoolScala 的数据类型 -DoubleBoolean

更新

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]
4

2 回答 2

5

自述文件中所述,这是您的操作方法.. :)

  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)  
于 2013-06-06T09:14:34.313 回答
2

查看代码(https://github.com/json4s/json4s/blob/7c70e9664232ffee4acf24c8969424cd37957736/ast/src/main/scala/org/json4s/JsonAST.scala)表明您只需要调用该JValue.values方法。

更新:从您的评论看来,您拥有 aJDouble并想要提取其Double值并没有太多(同样从 a 中提取Booleana JDouble。相反,您拥有 aJValue 并希望将其值提取为 a Doubleor Boolean(提前知道预期的类型)。这可以用 来完成extract,如您链接到的自述文件中所述:

(json \ "status").extract[Double]

或者:

(json \ "status").extract[Boolean]

另请参阅此测试文件以获取更多示例: https ://github.com/json4s/json4s/blob/master/tests/src/test/scala/org/json4s/ExtractionExamplesSpec.scala

于 2013-06-05T13:47:30.927 回答