Java 在使用GSON时忽略解析特定的JSON属性
我正在使用谷歌的GSON。我有一个JSON数据文件,如下所示:Java 在使用GSON时忽略解析特定的JSON属性,java,json,gson,Java,Json,Gson,我正在使用谷歌的GSON。我有一个JSON数据文件,如下所示: {"NAME":"Joe", "AGE":"18", "DATA":[0,0,0,0,0,...]} 其中,数据是一个非常非常大的数组 我想读取JSON文件,但是忽略了被解析的特定属性。在上述情况下,我希望省略读取数据,因此收到一个JsonObject,它只包含NAME和AGE 我有成千上万个这样的文件,我需要读取每个文件的NAME和AGE字段。很明显,我不需要解析数据,考虑到我需要处理的文件数量,我觉得这是对资源的巨大浪费 这可
{"NAME":"Joe",
"AGE":"18",
"DATA":[0,0,0,0,0,...]}
其中,数据
是一个非常非常大的数组
我想读取JSON文件,但是忽略了被解析的特定属性。在上述情况下,我希望省略读取数据
,因此收到一个JsonObject
,它只包含NAME
和AGE
我有成千上万个这样的文件,我需要读取每个文件的NAME
和AGE
字段。很明显,我不需要解析数据
,考虑到我需要处理的文件数量,我觉得这是对资源的巨大浪费
这可以通过谷歌的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
}
您应该编辑类并正确使用@Expose
注释
当您实例化Gson
对象以将JSON转换为Person
对象时,请使用以下命令:
Gson gson = new GsonBuilder().excludeFieldsWithoutExposeAnnotation().create();
这样,Gson就会知道哪些字段需要查看,哪些字段需要忽略
EDIT:Person中的属性是
public
,因为我假设您不会使用getter和setter。是否需要使用其序列化功能?实际上,我只需要获取一个JsonObject
,然后使用get()
获取名称并完成我的工作。当然,如果没有其他方法,那么这听起来确实是一个很好的实现方法。我知道JsonObject
方法似乎更简单,但是这个POJO类将有4行代码。如果还有其他方法的话,它没有很好的文档记录,我担心将来会失去兼容性。