我有一些源对象src,想从中获取一个JValue。 json4s的所有示例和文档似乎都是围绕获取JSON编码的字符串展开的,如下所示:

def encodeJson(src: AnyRef): String = {
    import org.json4s.NoTypeHints
    import org.json4s.JsonDSL.WithDouble._
    import org.json4s.jackson.JsonMethods._
    import org.json4s.jackson.Serialization
    import org.json4s.jackson.Serialization.write
    implicit val formats = Serialization.formats(NoTypeHints)

    write(src)
}


如果我只想要最终结果,那太好了,但是我更喜欢写一个:

def encodeJson(src: AnyRef): JValue


似乎我想使用ToJsonWritable[T],但是我似乎找不到Writer[AnyRef]的实现(我也找不到用于json4s的scaladocs,它只会告诉我实现)。

最佳答案

答案是org.json4s.Extraction-它具有方法decompose(a: Any)(implicit formats: Formats): JValue

def encodeJson(src: AnyRef): JValue = {
    import org.json4s.{ Extraction, NoTypeHints }
    import org.json4s.JsonDSL.WithDouble._
    import org.json4s.jackson.Serialization
    implicit val formats = Serialization.formats(NoTypeHints)

    Extraction.decompose(src)
}

关于scala - json4s:将类型转换为JValue,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23348480/

10-12 20:17