我正在处理Android应用程序,该应用程序处理大量传入的动态JSON数据。我最初使用标准的org.json包编写了自己的方法来处理数据。我正在努力使它变得干净"感觉干净"它通常很漂亮。
在调查解决方案后,我使用Gson重建了我的大多数方法。我正在使用更多嵌套数组和更多嵌套对象处理大量嵌套对象。
我有一个顶级容器类,看起来像
public class MovieContainer implements Serializable {
private List<Movie> movies;
public List<Movie> getMovies() {
return movies;
}
}
电影类包含
public class Movie implements Serializable {
private static final long serialVersionUID = 1L;
@SerializedName("rating")
private Rating ratings;
@SerializedName("tmdb_id")
private int tmdbID;
@SerializedName("actor_roles")
private Actor actors;
// ...20 or so items and getters/setters removed for brevity
然后我又得到另一个类来处理Actors,它们可能有自己的对象类,同样适用于Ratings类等等。
要解析我的JSON,我目前有12个不同的课程。
当我需要从嵌套对象访问某些内容时,我的java最终看起来像
movieItem.getImages().getBackdrop().getURL()
一开始并没有真正感觉很干净。
我已经使用了一些自定义的Deserializer方法来处理动态对象,我觉得我刚刚复制了凌乱的代码来解决这个问题。我添加了大量的课程和复杂性,我很难看到我从中获得了什么。
我刚刚使用GSON完全错了吗?我是否一直错过了这一点?是否有一些我应该使用的标准化模式,但却无法找到实例?
我将非常感谢任何关于如何正确处理这个问题的方向。
输入的信息可能看起来像https://gist.github.com/anonymous/5c5413c80bcbe7c3d25a(它很长,所以不会在这里发布)
答案 0 :(得分:0)
Gson致力于 Java Reflection 。使用Gson库,您不需要处理Mapping对象。图书馆独自完成。
例如如果您映射一个对象,您将首先搜索它是否存在于响应对象中,然后获取其值。假设对象的数量增加到1000,你的代码也会增加,但不是Gosn。它将使用Java Reflection自动映射响应中的对象。
我希望我清楚自己。还有什么,它是谷歌提供的官方图书馆。 :)。你可以信赖它。