Имея значение jString : JString
, содержащее строку "abc"
внутри, я получаю "JString(abc)" : String
, если я вызываю jString.toString
. Как мне получить "abc" : String
вместо этого?
Как преобразовать значение JSON JString в обычную строку в лифте?
Ответ 1
Чтобы извлечь значение из JValue, вы можете использовать любой метод, описанный здесь: Каков самый простой способ разбора JSON в Scala?
Например:
json.extract[String]
Вы можете использовать функцию "render" для преобразования любого формата JValue в печатный формат. Затем либо "симпатичный", либо "компактный" преобразует его в строку.
compact(render(json))
или
pretty(render(json))
Ответ 2
val jstring=JString("abc")
implicit val formats = net.liftweb.json.DefaultFormats
System.out.println(jstring.extract[String])
Ответ 3
Я считаю, что лучший способ - использовать match:
val x = ... (whatever, maybe it a JString)
x match {
case JString(s) => do something with s
case _ => oops, something went wrong
}
Ответ 4
Это было задано некоторое время назад, но мне нужен простой однострочный помощник, который получит мою строку для меня в контексте выражения, поэтому я написал эту маленькую вещь внутри объекта с именем Get:
object Get {
def string(value: JValue): String = {
val JString(result) = value
result
}
...
}
Таким образом, я могу просто сделать, например, val myString = Get.string(jsonStringValue)