【问题标题】:Parse JSON with Interface/trait and Different implementations使用接口/特征和不同的实现解析 JSON
【发布时间】:2018-04-06 17:19:17
【问题描述】:

目前我正在使用lift-json 将 json 解析为对象。这是我一般用的签名

net.liftweb.json.parse(json).extract[MyClass]

这工作正常。但是,我希望做更多的事情。假设我的班级有一个List[SomeTrait] 类型的对象,其中SomeTraittrait。我有两个不同的实现,具有不同的构造函数签名,但显然以不同的方式实现相同的方法。

在 JSON 或代码中是否有办法检测它应该使用哪个实现?这样,解析 json 的代码可以保持不变,但我可以继续添加 SomeTrait 的新实现

【问题讨论】:

    标签: json scala lift-json


    【解决方案1】:

    据我所知,在 Lift 中没有简单的方法可以做到这一点。您仍然需要一些属性才能提供有关 JSON 对象本身的类型信息,以便反序列化器能够选择正确的实例。

    我会使用 Jackson JsonTypeInfo 注释来标记子类,然后使用它的 ObjectMapper 来完成这项工作。

    查看https://github.com/FasterXML/jackson-annotations#handling-polymorphic-types了解更多详情。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-01-28
      • 2016-02-23
      • 1970-01-01
      • 1970-01-01
      • 2011-11-25
      • 2019-05-30
      • 1970-01-01
      • 2018-05-29
      相关资源
      最近更新 更多