【问题标题】:Retain type annotation while converting from ION to JSON从 ION 转换为 JSON 时保留类型注释
【发布时间】:2021-10-17 16:23:04
【问题描述】:

我有一个来源,我从中获取序列化的 ION 数据,这些数据的类型在多态类型字段上进行了注释。使用以下代码转换为 JSON 时,它正在丢失类型注释。有没有办法在转换后的 JSON 中获取离子类型注释作为字段?


    private final IonSystem system = IonSystemBuilder.standard().build();

    public String convert(final String serializedIon) {
        final IonValue ionValue = system.singleValue(serializedIon);

        final StringBuilder stringBuilder = new StringBuilder();
        final IonWriter writer = IonTextWriterBuilder.json().build(stringBuilder);

        ionValue.writeTo(writer);
        return stringBuilder.toString();
    }

输入离子

{matchConditions: [TypeA::{}, TypeB::{}]}

输出 JSON

{"matchConditions": [{}, {}]}

预期的 JSON

{"matchConditions": [{"type": "TypeA"}, {"type": "TypeB"}}

我无法控制 ION 如何在源代码中序列化。今后我也许可以为将来的数据更改它,但仍然需要一些方法来处理已经生成的数据。

【问题讨论】:

    标签: json jackson amazon-ion


    【解决方案1】:

    IonTextWriterBuilder.json() 生成的IonTextWriter 遵循the Ion Cookbook 中描述的 JSON 下转换算法。请注意第 13 步,这表明注释已被删除。

    ion-java 不提供任何其他开箱即用的自动 JSON 下转换工具。您需要编写自己的序列化逻辑来适应这个特定的用例,注意避免下游代码意外地将您添加的 type 字段解释为真实数据(即:不是元数据)。

    【讨论】:

      猜你喜欢
      • 2013-03-01
      • 2019-01-07
      • 2021-01-16
      • 2016-06-13
      • 1970-01-01
      • 2019-08-03
      • 2012-01-10
      • 2017-04-20
      • 1970-01-01
      相关资源
      最近更新 更多