0

我有一个来源,我从中获取序列化的 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 如何在源代码中序列化。今后我也许可以为将来的数据更改它,但仍然需要一些方法来处理已经生成的数据。

4

1 回答 1

0

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

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

于 2022-02-28T21:45:10.997 回答