Gson模式 - 有什么意义?解析复杂的动态数据

时间:2015-02-10 05:43:52

标签: java android json design-patterns gson

我正在处理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(它很长,所以不会在这里发布)

1 个答案:

答案 0 :(得分:0)

Gson致力于 Java Reflection 。使用Gson库,您不需要处理Mapping对象。图书馆独自完成。

例如如果您映射一个对象,您将首先搜索它是否存在于响应对象中,然后获取其值。假设对象的数量增加到1000,你的代码也会增加,但不是Gosn。它将使用Java Reflection自动映射响应中的对象。

我希望我清楚自己。还有什么,它是谷歌提供的官方图书馆。 :)。你可以信赖它。