Angularjs 如何在scalaJs中将未知类解析为Json的通用解决方案
我使用ScalaJs angular和Upickle,并尝试创建一个过滤器,将未知类转换为JSON 我尝试的是: 我的工作范围:Angularjs 如何在scalaJs中将未知类解析为Json的通用解决方案,angularjs,json,scala,scala.js,upickle,Angularjs,Json,Scala,Scala.js,Upickle,我使用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
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[\u]
而不是MyClass
是否有任何解决方案可以找到MyClass?(或者任何其他派生类型的解决方案?)广义上说,uPickle并不是为解决这个问题而设计的;我认为其他任何JSON序列化程序都不是。这种友好的序列化通常基于反射,而反射在JavaScript环境中是不可用的
我怀疑每个案例类确实需要一个过滤器,尽管可能是一个线性过滤器。(可能是作为一种基本特性,您可以将其混合到case类中,但我不知道角度,所以我不知道约束是什么样子。)使用
Any
本身就是一种不好的做法。这是事实,但如果我不想为每个case类编写一个过滤器,我必须在这种情况下使用Any…不使用Any
与泛型并不矛盾