反序列化不同类型对象的JSON数据

时间:2013-09-03 20:16:36

标签: java android json gson

我在Android设备上使用GSON。

我有JSON数据,但它可以以几个不同的对象的形式出现。

这就是我认为我需要处理它的方式。

public class Command 
{
    public String Command;  
}


String json = {"Command":"Something", "date":"now"}

String command = gson.fromJson(message, Command.class);

然后打开命令

Switch(command)
{

case: something
//deserialize to "something" object;
break;

case: other somthing
//deserialize to "other somthing" object;
break;

case: object 3
//deserialize to "object 3" object;
break;

}

GSON是否有某种自动映射到最适合的对象,所以我不必创建一个自定义对象处理程序并对String进行两次deseraialize?

2 个答案:

答案 0 :(得分:1)

我会使用

将其解析为一般的JsonObject
    JsonParser parser = new JsonParser();
    JsonObject jsonObject = parser.parse(json).getAsJsonObject();

然后找到关于每个json模式的独特内容,然后根据使用

将其转换为bean的模式
    gson.fromJson(jsonObject, AppropriateBean.class);

答案 1 :(得分:0)

我认为用户指南中涵盖了您尝试实现的example。请参阅有关Serializing and Deserializing Collection with Objects of Arbitrary Types的部分。他们建议使用底层的解析器API,然后使用fromGson方法,因此您不必解析中间对象,这对我来说听起来不错。但是,您也可以尝试两种替代方案。