Как преобразовать значение JSON JString в обычную строку в Lift? - PullRequest
20 голосов
/ 16 октября 2011

Имея значение jString : JString, содержащее строку "abc", я получаю "JString(abc)" : String, если я вызываю jString.toString. Как мне получить "abc" : String вместо этого?

Ответы [ 4 ]

18 голосов
/ 16 октября 2011

Чтобы извлечь значение из JValue, вы можете использовать любой метод, описанный здесь: Какой самый простой способ анализа JSON в Scala?

Например:

json.extract[String]

Вы можете использовать функцию 'render' для преобразования любого JValue в формат для печати. Затем либо 'pretty', либо 'compact' преобразует это в строку.

compact(render(json))

или

pretty(render(json))
7 голосов
/ 27 марта 2012
val jstring=JString("abc")
implicit val formats = net.liftweb.json.DefaultFormats 
System.out.println(jstring.extract[String])
6 голосов
/ 12 июня 2012

Я считаю, что лучше всего использовать матч:

val x = ... (whatever, maybe it's a JString)

x match {
  case JString(s) => do something with s
  case _          => oops, something went wrong
}
1 голос
/ 11 марта 2015

Это было задано некоторое время назад, но я хотел простой однострочный помощник, который мог бы получить мою строку для меня в контексте выражения, поэтому я написал эту небольшую вещь внутри объекта с именем Get:

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

Таким образом, я могу просто сделать, например, val myString = Get.string (jsonStringValue)

...