使用 GSON 时省略特定 JSON 属性的解析

Omit specific JSON properties from being parsed when using GSON

我正在使用 Google 的 GSON。我有一个这样的 JSON 数据文件:

{"NAME":"Joe",
"AGE":"18",
"DATA":[0,0,0,0,0,...]}

其中 DATA 是一个非常非常大的数组。

我想读取 JSON 文件,但 忽略了 正在解析的特定属性。在上述情况下,我想省略读取 DATA 并因此收到仅包含 NAMEAGE.

JsonObject

我有成千上万个这样的文件,我需要阅读每个文件的 NAMEAGE 字段。很明显我不需要解析 DATA,考虑到我需要处理的文件数量,我觉得这是一种巨大的资源浪费。

这可以使用 Google 的 GSON 实现吗?

是的,可以。 GSON 支持注解。

创建一个简单的 POJO,如果您还没有的话。

public class Person {
    @Expose @SerializedName("NAME")
    public String name;
    @Expose @SerializedName("AGE")
    public String age; // because your snippet showed "18" in quotes

    // getters and setters, if you like
}

您应该编辑 class 并正确使用 @Expose 注释。

当您实例化 Gson 对象以将 JSON 转换为 Person 对象时,请使用:

Gson gson = new GsonBuilder().excludeFieldsWithoutExposeAnnotation().create();

这样,Gson 就会知道要查看哪些字段,要忽略哪些字段。

编辑: Person 中的属性是 public 因为我假设你不会使用 getter 和 setter。