使用 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
并因此收到仅包含 NAME
和 AGE
.
的 JsonObject
我有成千上万个这样的文件,我需要阅读每个文件的 NAME
和 AGE
字段。很明显我不需要解析 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。
我正在使用 Google 的 GSON。我有一个这样的 JSON 数据文件:
{"NAME":"Joe",
"AGE":"18",
"DATA":[0,0,0,0,0,...]}
其中 DATA
是一个非常非常大的数组。
我想读取 JSON 文件,但 忽略了 正在解析的特定属性。在上述情况下,我想省略读取 DATA
并因此收到仅包含 NAME
和 AGE
.
JsonObject
我有成千上万个这样的文件,我需要阅读每个文件的 NAME
和 AGE
字段。很明显我不需要解析 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。