我今天一直在与使用 GSON 进行 JSON 解析作斗争,而且很多事情都进展顺利,而且麻烦最少。
不过,对于以下 JSON 字符串,我开始遇到一些问题;
{"success":1,"response":{"dvds":{"IronMan":{"rating":"awesome"},"BatMan":{"rating":"awesome"},"Smurfs":{"rating":"childish"}}}}
在这个 JSON 中,我有一个包含响应类型集合的集合“响应”。在示例中,唯一包含的响应类型是 dvds。但我的问题就在这里;我希望将“dvds”的每个孩子都解析为 List 响应,每个孩子都是一个 Dvd 类对象(包含一个字符串“标题”和一个字符串“评级”)
到目前为止,解析单独的值/对象和解析数组并没有真正的问题,但我无法解决如何解析此类集合。
今天谷歌搜索一直引用我“TypeTokens”但查看有关此问题的各种主题中的代码,我仍然不明白如何为我的使用场景实现它。
所以,具体一点;“如何让 GSON 正确识别我的 responsetype 和 dvd-collections?”
目前我的 ResponseData.class 看起来像这样:
public class ResponseData {
public int success;
public List<ResponseTypes> responsetypes;
public class ResponseType{
public List<Dvd> Dvds;
}
public class Dvd{
public String title;
public String rating;
}
}
这就是我以基于数组的形式看待这个问题的方式,但是这次我需要在遇到对象集合的情况下应用它。在所有情况下,我都能想到对象的 Class 应该能够通过其父级的名称来识别。
目前解析启动如下;
try{
Gson gson = new Gson();
Reader reader = new InputStreamReader(stream);
ResponseData responsedata = gson.fromJson(reader, ResponseData.class);
return responsedata;
}
我真的希望有人可以帮助我!谢谢!