scala - 无法让 json4s 渲染我的案例类?

标签 scala json4s

我设置了一个 SBT 控制台,例如...

import org.json4s._
import org.json4s.native.JsonMethods._
import org.json4s.JsonDSL._
case class TagOptionOrNull(tag: String, optionUuid: Option[java.util.UUID], uuid: java.util.UUID)
val t1 = new TagOptionOrNull("t1", Some(java.util.UUID.randomUUID), java.util.UUID.randomUUID)
val t2 = new TagOptionOrNull("t2", None, null)

我正在尝试查看 json4s 在 null 与 Option[UUID] 方面的行为。但我无法弄清楚如何调用它来使我的案例类成为 JSON 字符串。

scala> implicit val formats = DefaultFormats
formats: org.json4s.DefaultFormats.type = org.json4s.DefaultFormats$@614275d5

scala> compact(render(t1))
<console>:23: error: type mismatch;
 found   : TagOptionOrNull
 required: org.json4s.JValue
    (which expands to)  org.json4s.JsonAST.JValue
       compact(render(t1))

我错过了什么?

最佳答案

Serialization.write应该能够像这样序列化案例类

import org.json4s.native.Serialization.write
implicit val formats = DefaultFormats ++ JavaTypesSerializers.all
println(write(t1))

应该输出

{"tag":"t1","optionUuid":"95645021-f60c-4708-8bf3-9d5609559fdb","uuid":"19cc4979-5836-4edf-aedd-dcb3e96f17d6"}

注意序列化UUID,我们需要JavaTypeSerializers格式来自

libraryDependencies += "org.json4s" %% "json4s-ext" % version

关于scala - 无法让 json4s 渲染我的案例类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56281511/

相关文章:

json - 如何使用 json4s 从 akka-http 响应实体读取 json 响应

json - 使用 Scala 使用 Json4s 从 JSON 中提取字符串

scala - 如何为 Play 框架过滤器编写测试?

scala - 包含保留关键字的 JSON 反序列化

scala - 如何定义与更高种类类型绑定(bind)的上下文(类型构造函数)

scala - Spark、Kryo ProtoBuf 字段的序列化问题

json - json4s中 `render`的用途

json - Spark + Json4s 序列化问题

java - 连接到远程 Spark master - Java/Scala

scala - CrossValidator 不支持 VectorUDT 作为 spark-ml 中的标签