Java Gson如何处理对象字段?

在此示例中,您将看到Gson库如何处理对象字段。对于将对象字段序列化为JSON字符串,它不需要使用任何注释,它甚至可以读取私有字段。如果您有一个nullvalue字段,它将不会被序列化为JSON字符串。要从序列化中排除某个字段,可以使用transient关键字标记该字段。

在下面的代码段中,我们创建了一个People对象。该对象有一个null名为的值字段age,该字段不会包含在序列化中,因为我们没有为其分配任何值。该secret字段也未序列化,因为我们将其标记为transient关键字。

package org.nhooo.example.google.gson;

import com.google.gson.Gson;

import java.util.Calendar;

public class GsonFieldExample {
    public static void main(String[] args) {
        Calendar dob = Calendar.getInstance();
        dob.set(1980, Calendar.NOVEMBER, 11);
        People people = new People("John", "350 Banana St.", dob.getTime());
        people.setSecret("This is a secret!");

        Gson gson = new Gson();
        String json = gson.toJson(people);
        System.out.println("json = " + json);
    }
}

如果您运行上面的代码,您将看到打印以下行:

json = {"name":"John","address":"350 Banana St.","dateOfBirth":"Nov 11, 1980 8:47:04 AM"}

这是People课程。

package org.nhooo.example.google.gson;

import java.util.Date;

public class People {
    private String name;
    private String address;
    private Date dateOfBirth;
    private Integer age;
    private transient String secret;

    public People(String name, String address, Date dateOfBirth) {
        this.name = name;
        this.address = address;
        this.dateOfBirth = dateOfBirth;
    }

    public String getSecret() {
        return secret;
    }

    public void setSecret(String secret) {
        this.secret = secret;
    }
}

Maven依赖

<!-- http://repo1.maven.org/maven2/com/google/code/gson/gson/2.8.0/gson-2.8.0.jar -->
<dependency>
    <groupId>com.google.code.gson</groupId>
    <artifactId>gson</artifactId>
    <version>2.8.0</version>
</dependency>