template objeto crear convertir string json scala lift lift-json

objeto - ¿Cómo convertir un valor JSON JString en una cadena normal en Lift?



javascript ${} (4)

Creo que la mejor manera es usar match:

val x = ... (whatever, maybe it''s a JString) x match { case JString(s) => do something with s case _ => oops, something went wrong }

Teniendo un valor jString : JString que contiene una cadena "abc" dentro, obtengo "JString(abc)" : String si llamo jString.toString . ¿Cómo obtengo "abc" : String lugar?


Esto se me preguntó hace un rato, pero quería un ayudante simple de una línea que obtuviera mi cadena en el contexto de una expresión, así que escribí esta pequeña cosa dentro de un objeto llamado Get:

object Get { def string(value: JValue): String = { val JString(result) = value result } ... }

De esta manera puedo hacerlo, por ejemplo, val myString = Get.string (jsonStringValue)


Para extraer un valor de JValue, puede utilizar cualquier método descrito aquí: ¿Cuál es la forma más sencilla de analizar JSON en Scala?

Por ejemplo:

json.extract[String]

Puede usar la función ''render'' para convertir cualquier JValue a formato imprimible. Entonces, ''bonito'' o ''compacto'' lo convertirán en una cadena.

compact(render(json))

o

pretty(render(json))


val jstring=JString("abc") implicit val formats = net.liftweb.json.DefaultFormats System.out.println(jstring.extract[String])