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

时间:2013-09-02 10:49:30

标签: java json serialization deserialization gson

我遇到了一个反序列化json的问题,其中有一个字段可以有多个类型,并且该类型由另一个字段决定。

为了解决这个问题,请将json下面的3个示例称为Extra,它的字段Unit总是一个字符串,它的字段值可以是十进制(例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},
]
}

1 个答案:

答案 0 :(得分:0)

尝试以下内容: 拿一个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;
    }
    

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