Having a jString : JString
value holding an "abc"
string inside I get "JString(abc)" : String
if I call jString.toString
. How do I get "abc" : String
instead?
How to convert a JSON JString value to an ordinary String in Lift?
To extract a value from JValue you can use any method described here: What is the most straightforward way to parse JSON in Scala?
For instance:
json.extract[String]
You can use 'render' function to convert any JValue to printable format. Then either 'pretty' or 'compact' will convert that to a String.
compact(render(json))
or
pretty(render(json))
I don't want to render JSON. I want the opposite - to extract a string value of a property of an object serialized in JSON and I've already isolated that only field into a separate JString, containing nothing but the value I need. –
Magnify
val jstring=JString("abc")
implicit val formats = net.liftweb.json.DefaultFormats
System.out.println(jstring.extract[String])
I believe the best way is to use match:
val x = ... (whatever, maybe it's a JString)
x match {
case JString(s) => do something with s
case _ => oops, something went wrong
}
This was asked a while ago, but I wanted a simple one-line helper that would get my string for me in the context of an expression, so I wrote this little thing inside of an object called Get:
object Get {
def string(value: JValue): String = {
val JString(result) = value
result
}
...
}
This way I can just do, e.g., val myString = Get.string(jsonStringValue)
© 2022 - 2024 — McMap. All rights reserved.
jString.values : String
but I feel uncertain if it's correct - why is it calledvalues
(not avalue
) if there's just aString
? – Magnify