我正在使用 Upickle/Ujson 并想编写一个自定义编码器来掌握事情的窍门。
假设我有以下层次结构(来自这里的教程:链接)
import upickle.default._
object TestDrive extends App {
sealed trait TypedFoo
object TypedFoo{
import upickle.default._
implicit val readWriter: ReadWriter[TypedFoo] = ReadWriter.merge(
macroRW[Bar], macroRW[Baz], macroRW[Quz]
)
case class Bar(i: Int) extends TypedFoo
case class Baz(s: String) extends TypedFoo
case class Quz(b: Boolean) extends TypedFoo
}
import TypedFoo._
println(writeJs(Bar(100)))
}
首先,这无法编译。为什么会这样?我误解了页面吗?
第二
如果我想序列化 Bar 并同时添加一个字段 "parent":"TypedFoo" 怎么办?所以酒吧看起来像:
{"parent":"TypedFoo", "$type":"package.TestDrive.TypedFoo.Bar","i":100}
我该怎么做呢?