簡體   English   中英

從 ION 轉換為 JSON 時保留類型注釋

[英]Retain type annotation while converting from ION to JSON

我有一個來源,我從那里獲得序列化的 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::{}]}

Output JSON

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

預計JSON

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

我無法控制 ION 如何在源代碼中序列化。 今后我可能可以為將來的數據更改它,但仍然需要一些方法來處理已經生成的數據。

IonTextWriter IonTextWriterBuilder.json()生成的 IonTextWriter 遵循Ion Cookbook中描述的 JSON 下轉換算法。 請注意第 13 步,它指示注釋被刪除。

ion-java不提供任何其他開箱即用的自動 JSON 下轉換工具。 您需要編寫自己的序列化邏輯來適應這個特定的用例,注意避免下游代碼意外地將您添加的type字段解釋為真實數據(即:不是元數據)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM