【发布时间】:2020-02-20 09:08:50
【问题描述】:
我最近开始学习 Scala。我需要一种简单的方法来在 Json 中序列化我的数据。下面我举一个数据的例子。我尝试了几个流行的库:GSON、Play JSON、Circe,但都没有得到结果! GSON 不知道如何使用 Option(例如 Option [String]),在 Play JSON 和 Circe 中他们需要描述抽象类的序列化和反序列化(我不知道如何解决这个问题)。
// Test data
abstract class Base(id: Long, descr: Option[String])
case class A(id: Long, descr: Option[String], a: Option[Long]) extends Base(id, descr)
case class B(id: Long, descr: Option[String], b: Option[Double]) extends Base(id, descr)
case class Data(id: Long, user: Option[String], data: Option[Array[Base]])
val test: Array[Data] = Array(
Data(1, Some("Qqq"), None),
Data(2, None, None),
Data(3, Some("Zzz"), Some(
Array(
A(1, Some("a1"), Some(111)),
A(2, Some("a2"), None),
A(3, None, Some(333)),
B(4, Some("b1"), Some(444.444)),
B(5, Some("b2"), None),
B(6, None, Some(666.666))
)
)) )
【问题讨论】:
-
对于
circe,请查看此页面circe.github.io/circe/codecs/adt.html
标签: json scala serialization json-serialization