scala - Extraer el valor de cadena usando json4s
(1)
He seguido la sesión de la consola de Scala para json4s, donde estoy tratando de extraer el valor de String de un json analizado:
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.Formats
y sus miembros ya están dentro del alcance. ¿Cómo puedo arreglar esto?
EDITAR1
De la respuesta de @mfirry
, esto funciona:
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
Solo necesitas añadir
implicit val formats = DefaultFormats
y funcionará bien