scala - json4s:将类型转换为 JValue

标签 scala json4s

我有一些源对象 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/

相关文章:

Scala 排序选项

json - 比较Scala中的json相等性

json - 如何使用带有 UTF-8 字符的 json4s 序列化 JSON?

scala - 使用 Scala 和 JSON4S 操作 JSON 中的数组

sbt - 如何从任务中的文件读取数据并使用它来设置另一个设置?

scala - 不可变的惯用的“获取或更新”。

postgresql - 使用 Anorm 在 PostgreSQL 中插入图像文件

scala - 使用 json4s 序列化和反序列化 scala 枚举或 case 对象

json - 使用JSON4S在Scala中对案例对象进行反序列化

c# - Scala 中的泛型 : implementing an interface/trait twice?