【问题标题】:How to convert a JSON JString value to an ordinary String in Lift?如何将 JSON JString 值转换为 Lift 中的普通字符串?
【发布时间】:2011-12-08 13:46:21
【问题描述】:

有一个jString : JString 值,里面有一个"abc" 字符串,如果我调用jString.toString,我会得到"JString(abc)" : String。我如何获得"abc" : String

【问题讨论】:

  • 我找到了使用 jString.values : String 的解决方案,但我不确定它是否正确 - 如果只有一个 String,为什么它被称为 values(不是 value)?

标签: string json scala lift lift-json


【解决方案1】:

这是不久前提出的,但我想要一个简单的单行助手,它可以在表达式的上下文中为我获取我的字符串,所以我在一个名为 Get 的对象中编写了这个小东西:

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

这样我就可以做到,例如,val myString = Get.string(jsonStringValue)

【讨论】:

    【解决方案2】:

    我认为最好的方法是使用匹配:

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

    【讨论】:

      【解决方案3】:
      val jstring=JString("abc")
      implicit val formats = net.liftweb.json.DefaultFormats 
      System.out.println(jstring.extract[String])
      

      【讨论】:

        【解决方案4】:

        要从 JValue 中提取值,您可以使用此处描述的任何方法:What is the most straightforward way to parse JSON in Scala?

        例如:

        json.extract[String]
        

        您可以使用“渲染”功能将任何 JValue 转换为可打印格式。然后 'pretty' 或 'compact' 会将其转换为字符串。

        compact(render(json))
        

        pretty(render(json))
        

        【讨论】:

        • 我不想渲染 JSON。我想要相反 - 提取以 JSON 序列化的对象的属性的字符串值,并且我已经将该唯一字段隔离到单独的 JString 中,只包含我需要的值。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-08-06
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多