1

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

为了清楚地说明这个问题,请看下面的 3 个示例,json 称为 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},
]
}
4

1 回答 1

0

尝试以下操作: 取一个 bean,例如:ExampleBean 在 ExampleBean 中取另一个 List of Your Values 的属性,例如:List values;

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

    公共静态列表 getListFromGsonString(String jsonString){
        Gson gson = 新 Gson();
        类型 listType = new TypeToken() {}.getType();
        列表列表 = (List)gson.fromJson(jsonString, listType);
        返回列表;
    }
    

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

于 2013-09-02T11:50:25.827 回答