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