繁体   English   中英

Java GSON:反序列化具有不同类型的字段

[英]Java GSON: Deserializing a field which has different types

我遇到了反序列化json的问题,其中存在一个字段可以具有多种类型,而该类型由另一个字段确定。

为了使这个问题更清楚,请在json下面的3个示例中将其称为Extra,它的字段Unit始终是字符串,字段Value可以是十进制(示例1),对象(示例2)或对象列表(示例3)取决于字段Unit的值。

我对GSON相当陌生,不确定如何解决此问题,从看API来看,我似乎必须编写一个自定义解串器? 在该示例中,一个字段的类型取决于另一个字段,我将如何编写一个?

Example 1
Extra {
Unit:"Decimal"
Value:0.0
}

Example 2
Extra {
Unit:"Object"
Value:{object}
}

Example 3
Extra {
Unit:"List of objects"
Value:[{object}
{object},
{object},
]
}

尝试以下类似的操作:以一个bean为例:ExampleBean在ExampleBean中,继承另一个您的值列表,例如:列表值;

然后尝试将GSON转换为List,如下所示

public static List getListFromGsonString(String jsonString){
        Gson gson = new Gson();
        Type listType = new TypeToken() {}.getType();
        List list = (List)gson.fromJson(jsonString, listType);
        return list;
    }

这就是我们在项目中所做的。 如果不适用,请忽略。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM