使用Playframework json格式化密封类型的参数化特征

时间:2019-01-22 11:59:02

标签: json scala deserialization playframework-2.6

我有类型参数化的密封特征

sealed trait PropertyValue[T <: Property]

我需要写format来进行Json序列化/反序列化。 我尝试

implicit def format[P <: Property : Format]: Format[PropertyValue[P]] = {
    Format(
      Reads(j =>
        Json.fromJson[StringPropertyValue](j)
          .orElse(Json.fromJson[NumberPropertyValue](j))
          .orElse(JsError("Undefined type"))
      ),
      Writes(o => Json.toJson(o))
    )
  }

但是我有

type mismatch;
[error]  found   : play.api.libs.json.JsResult[Product with Serializable with PropertyValue[_ >: StringProperty with NumberProperty <: Product with Serializable with Property]]
[error]  required: play.api.libs.json.JsResult[PropertyValue[P]]

有什么方法可以实现类型参数化特征的Reads[trait[T]]

0 个答案:

没有答案