目前我正在使用lift-json
将json解析为对象。这是我一般使用的签名
net.liftweb.json.parse(json).extract[MyClass]
这很好用。但是,我希望再做一点。假设我的类有List[SomeTrait]
类型的对象,其中SomeTrait
是trait
。我有两个不同的特征实现与不同的构造函数签名,但显然实现相同的方法不同。
JSON或代码中是否有一种方法可以检测它应该使用哪种实现?这样,解析json的代码可以保持不变但我可以继续添加SomeTrait
的新实现
答案 0 :(得分:1)
据我所知,在Lift中没有简单的方法可以做到这一点。您仍然需要一些属性才能提供有关JSON对象本身的类型信息,因此反序列化器将能够获取正确的实例。
我会使用Jackson JsonTypeInfo
注释来标记子类,然后使用它ObjectMapper
来完成这项工作。
查看https://github.com/FasterXML/jackson-annotations#handling-polymorphic-types了解更多详情。