1

我正在使用 ScalaJs angular 和 Upickle,我尝试创建一个过滤器来将未知类转换为 JSON。

我尝试了什么:

我的范围:

var myScope: MyClass = js.native

我的过滤器:

@injectable("copy")
class CopyFilter extends Filter[Any] {

  override def filter(any: Any): js.Dynamic = {
    val myClass = any.getClass
    fromClassToJsValue[myClass](any)
  }
}

我的功能

def fromClassToJsValue[A](value: A)(implicit serializer: Writer[A]): js.Dynamic =
JSON.parse(write(value))

在这种情况下,我的问题是getClass哪个返回Class[_]而不是MyClass

有什么解决办法MyClass吗?(或者也许有任何其他解决方案来派生任何类型?)

4

1 回答 1

3

从广义上讲,uPickle 并不是为了处理这个问题而设计的。我也不认为任何其他 JSON 序列化器是。这种对 Any 友好的序列化通常基于反射,这在 JavaScript 环境中大多不可用。

我怀疑您确实需要每个案例类别的过滤器,尽管可能是单线。(可能作为一个基本特征完成,您将其混合到案例类本身中,但我不了解 Angular,所以我不知道约束是什么样的。)

于 2017-12-12T13:22:46.627 回答