scala 使用 json4s 提取字符串值
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/32378429/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Extract String value using json4s
提问by tuxdna
I have following Scala console session for json4s, where I am trying to extract String value from a parsed json:
我有以下 json4s 的 Scala 控制台会话,我试图从解析的 json 中提取字符串值:
scala> import org.json4s._
import org.json4s._
scala> import org.json4s.native.JsonMethods._
import org.json4s.native.JsonMethods._
scala> val s = """ {"a": "hello"} """
s: String = " {"a": "hello"} "
scala> val json = parse(s)
json: org.json4s.JValue = JObject(List((a,JString(hello))))
scala> json \ "a"
res0: org.json4s.JValue = JString(hello)
scala> res0.extract[String]
<console>:17: error: No org.json4s.Formats found. Try to bring an instance of org.json4s.Formats in scope or use the org.json4s.DefaultFormats.
res0.extract[String]
^
scala> import org.json4s.Formats._
import org.json4s.Formats._
scala> res0.extract[String]
<console>:20: error: No org.json4s.Formats found. Try to bring an instance of org.json4s.Formats in scope or use the org.json4s.DefaultFormats.
res0.extract[String]
^
scala> import org.json4s.DefaultFormats._
import org.json4s.DefaultFormats._
scala> res0.extract[String]
<console>:23: error: No org.json4s.Formats found. Try to bring an instance of org.json4s.Formats in scope or use the org.json4s.DefaultFormats.
res0.extract[String]
^
org.json4s.DefaultFormats, org.json4s.Formatsand there members are already in scope. How can I fix this?
org.json4s.DefaultFormats,org.json4s.Formats并且有成员已经在范围内。我怎样才能解决这个问题?
EDIT1
编辑1
From @mfirry's answer, this works:
从@mfirry的回答,这有效:
scala> implicit val formats = DefaultFormats
formats: org.json4s.DefaultFormats.type = org.json4s.DefaultFormats$@12b195f5
scala> val json = parse(""" {"a": "hello", "b": 1.2} """)
json: org.json4s.JValue = JObject(List((a,JString(hello)), (b,JDouble(1.2))))
scala> (json \ "b").extract[String]
res6: String = 1.2
scala> (json \ "b").extract[Double]
res7: Double = 1.2
回答by mfirry
You just need to add
你只需要添加
implicit val formats = DefaultFormats
and it'll work just ok.
它会正常工作。

