不同的Json基于变量的类型

时间:2018-03-13 06:37:32

标签: json scala spray

我有:

case class A(a: T, b: String)

我希望根据A类变量a的不同类型使用不同的json。

例如,如果type为T1,我希望json像{ "aaa": "value", "b":"value"} 如果type为T2,我希望json像{ "bbb": "value", "b":"value"}

我正在使用喷雾json

1 个答案:

答案 0 :(得分:0)

您必须提供自定义协议:

implicit object AJsonFormat extends RootJsonFormat[A] {
    def write(foo: A) = JsObject(
      foo.a match {
        case a: T1 => "aaa" -> JString(a)
        case a: T2 => "bbb" -> Jstring(a)
      },
      "b" -> JString(foo.b))
}