如何在scalaJs中使用通用解决方案将未知类解析为Json

时间:2017-12-12 11:12:56

标签: angularjs json scala scala.js upickle

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

我尝试了什么:

我的范围:

driver.switch_to_default_content()

我的过滤器:

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的解决方案? (或者可能是任何其他解决方案,以获得类型Any?)

1 个答案:

答案 0 :(得分:3)

从广义上讲,uPickle并非旨在解决这个问题;我不认为任何其他JSON序列化器也是。这种任意友好的序列化通常基于反射,这在JavaScript环境中几乎不可用。

我怀疑你确实需要一个过滤器每个案例类,尽管可能是一个单行。 (可能作为一个基本特征,你混合到案例类本身,但我不知道Angular,所以我知道不是约束的样子。)