Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在使用GSON时忽略解析特定的JSON属性_Java_Json_Gson - Fatal编程技术网

Java 在使用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字段。很明显,我不需要解析数据,考虑到我需要处理的文件数量,我觉得这是对资源的巨大浪费 这可

我正在使用谷歌的GSON。我有一个JSON数据文件,如下所示:

{"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行代码。如果还有其他方法的话,它没有很好的文档记录,我担心将来会失去兼容性。