Я недавно начал учить 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))
)
)) )