15

我有一些源对象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,它只会告诉我实现)。

4

1 回答 1

13

这里的答案是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)
}
于 2014-04-28T19:14:49.973 回答