gpt4 book ai didi

scala - spray-json:序列化一个通用特征

转载 作者:行者123 更新时间:2023-12-04 23:17:45 33 4
gpt4 key购买 nike

Spray-json 依赖于范围内隐式 JsonWriter[T] 的存在调用toJson时在 T 的实例上.

假设我有几个具体子类型的特征,每个子类型都有一个 JsonWriter:

trait Base
case class Foo(a: Int) extends Base
case class Bar(a: Int, b: Int) extends Base
implicit val FooFormat = jsonFormat1(Foo)
implicit val BarFormat = jsonFormat2(Bar)

def go(o: Base) = {
o.toJson
}
go无法编译,因为 Base 没有 JsonWriter,即使所有具体子类型都有编写器。

如何重新组织此代码,以便 Base 的通用功能使用适当的 json 格式化程序?

最佳答案

您可以使用具有类型和上下文边界的泛型方法。像这样:

def go[T <: Base : JsonWriter](t: T) = t.toJson

关于scala - spray-json:序列化一个通用特征,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35875016/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com