使用接口/特征和不同的实现解析 JSON



目前我正在使用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 了解更多详情。

相关内容

  • 没有找到相关文章

最新更新