我有类型参数化的密封特征
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]]
?