scala json4s

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