在此示例中,您将看到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>