如何在Lift中将JSON JString值转换为普通字符串?
有一个如何在Lift中将JSON JString值转换为普通字符串?,string,json,scala,lift,lift-json,String,Json,Scala,Lift,Lift Json,有一个jString:jString值,里面有一个“abc”字符串,我得到“jString(abc)”:string如果我调用jString.toString。如何取而代之的是“abc”:String?要从JValue中提取值,可以使用此处描述的任何方法: 例如: json.extract[String] 您可以使用“render”函数将任何JValue转换为可打印格式。然后,“pretty”或“compact”将其转换为字符串 compact(render(json)) 或 我认为最好的方
jString:jString
值,里面有一个“abc”
字符串,我得到“jString(abc)”:string
如果我调用jString.toString
。如何取而代之的是“abc”:String
?要从JValue中提取值,可以使用此处描述的任何方法:
例如:
json.extract[String]
您可以使用“render”函数将任何JValue转换为可打印格式。然后,“pretty”或“compact”将其转换为字符串
compact(render(json))
或
我认为最好的方法是使用match:
val x = ... (whatever, maybe it's a JString)
x match {
case JString(s) => do something with s
case _ => oops, something went wrong
}
这是前一段时间提出的问题,但我需要一个简单的单行帮助程序,它可以在表达式的上下文中为我获取字符串,因此我在一个名为get的对象中编写了这个小东西:
object Get {
def string(value: JValue): String = {
val JString(result) = value
result
}
...
}
这样我就可以做了,例如,val myString=Get.string(jsonStringValue)我找到了使用
jString.values:string
的解决方案,但我不确定它是否正确-如果只有字符串,为什么称它为values
(不是值
),我不想呈现JSON。我想要相反的结果——提取JSON中序列化的对象的属性的字符串值,并且我已经将该字段隔离到一个单独的JString中,它只包含我需要的值。
val x = ... (whatever, maybe it's a JString)
x match {
case JString(s) => do something with s
case _ => oops, something went wrong
}
object Get {
def string(value: JValue): String = {
val JString(result) = value
result
}
...
}