【问题标题】:Lift JSON JValue Extract issue解除 JSON JValue 提取问题
【发布时间】:2014-11-21 06:47:24
【问题描述】:
import net.liftweb.json._
import net.liftweb.json.JsonAST._
import net.liftweb.json.Extraction._
import net.liftweb.json.Printer._

implicit val formats = net.liftweb.json.DefaultFormats

val jV = JArray(List(JInt(10),JString("ahem"),JBool(false)))

我正在处理混合类型的情况并尝试使用

将 Jv 转换为 List[Strings]
jV.extract[List[String]]

提取不起作用。

谁能告诉我该怎么做呢

【问题讨论】:

    标签: scala lift lift-json json4s


    【解决方案1】:

    Lift JSON 没有在序列化程序中定义的字符串和 JBool 之间的转换。

    Array 中的 List 是否总是具有相同的形状?如果是这样,那么您可以执行以下操作:

    case class Datum(id: BigInt, comment: String, bool: Boolean)
    
    val data = jv.extract[List[Datum]]
    

    如果这对您不起作用,因为没有统一的形状,但您仍然只需要一个字符串列表,那么您可以在尝试提取之前将 JBools 转换为 JStrings:

    jv.map({
      case JBool(bool) => if (bool) JString("true") else JString("false")
      case x => x
    }).extract[List[String]]
    

    不过,总的来说,我建议您考虑一下为什么要在此处丢弃类型信息。 Scala 的强大功能很大程度上来自于它的类型系统,所以最好使用它而不是在这里通过字符串输入来丢失它。

    【讨论】:

      猜你喜欢
      • 2022-01-10
      • 2011-06-13
      • 2012-06-10
      • 1970-01-01
      • 2014-04-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多