我想取消使用lift-json序列化的Scala用例类的序列化。我遇到的问题是,我不知道如何调用下面的通用方法extractOpt[A]
方法:
someString:String = {...}
JsonParser.parse(someString).extractOpt[A]
[A]
的类型将取决于元数据,例如[A]
的类名,但就我而言,我不知道如何使用反射进行调用。在c#中,我可以使用反射为extractOpt[A]
上的调用设置泛型类型。我担心我的问题与Java类型的擦除有关
我将有很多case类,所以我真的想避免必须从{metadata}->classOf[]创建某种手工制作的映射。我完全可以控制与someString
相关联的元数据是什么。
如果这有助于理解为什么我有这个问题,我正在实现事件源,并且我的所有[A]类型都将是持久化事件。你知道我能做什么吗?
val json:JValue = JsonParser.parse(someString)
//typeName = classCanonicalName, ie this is the metadata
val eventType = Class.forName(typeName)
val deserialised:Event = Extraction.extract(json, TypeInfo(eventType,None)).asInstanceOf[Event]
对于奖励积分,为什么按下StackOverflow上的"提问"按钮会让你立即想到解决自己问题的方法?)