我使用REST服务在json中响应这样的消息:
{
"statusMessage":{
"message":"my message",
"error":false
},
"data":null
}
字段data
是一个数组,有时为null,有时会填充一个类的实例(如Partner,Department,Building,...只有一种类型)。
在我的Java应用程序中,我有一个ServerResponse
类,它看起来像:
public class ServerResponse {
private StatusMessage statusMessage;
private List<Object> data;
public ServerResponse(StatusMessage statusMessage, List<Object> data) {
this.statusMessage = statusMessage;
this.data = data;
}
...
}
当data
为null时,没有问题,但是当它填充某些对象时,我不知道如何反序列化它。如果我使用:
response = gson.fromJson(result, ServerResponse.class);
我无法投射或使用data
中的对象列表。此外,如果我用Java声明字段数据:
private List<Department> data;
它适用于Department
类型,但正如可能预期的那样,会抛出其他类型的错误。我被卡住了......
答案 0 :(得分:0)
如果您没有为data
指定类型,即您现在使用List<Object>
,您将获得一个地图列表(并且地图可以再次包含列表或地图,具体取决于内容)。
如果您可以通过内容区分对象类型,则可以编写一个简单的自定义反序列化程序,如问here(检查isA
字段)