Gson是Google提供的一个用于Java对象和JSON数据之间进行序列化和反序列化的库。它可以将Java对象转换为JSON格式的字符串,也可以将JSON格式的字符串转换为Java对象。
在默认情况下,Gson会将Java对象的所有字段都进行序列化和反序列化操作。然而,有时候我们希望某些字段不参与序列化,比如mac地址。为了实现这个目的,可以使用Gson提供的注解@Expose和@SerializedName。
@Expose注解用于标记需要参与序列化和反序列化的字段,而@SerializedName注解用于指定字段在JSON中的名称。
对于mac地址字段,我们可以在定义该字段时使用@Expose注解进行标记,然后在序列化和反序列化时通过GsonBuilder设置excludeFieldsWithoutExposeAnnotation()方法来排除未标记的字段。
下面是一个示例代码:
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.annotations.Expose;
class MyClass {
@Expose
private String macAddress;
// 其他字段和方法...
}
public class Main {
public static void main(String[] args) {
MyClass obj = new MyClass();
obj.setMacAddress("00:11:22:33:44:55");
Gson gson = new GsonBuilder().excludeFieldsWithoutExposeAnnotation().create();
// 序列化
String json = gson.toJson(obj);
System.out.println(json);
// 反序列化
MyClass newObj = gson.fromJson(json, MyClass.class);
System.out.println(newObj.getMacAddress());
}
}
在上述代码中,我们使用@Expose注解标记了macAddress字段,然后通过GsonBuilder的excludeFieldsWithoutExposeAnnotation()方法来排除未标记的字段。这样,在序列化和反序列化时,Gson就会忽略macAddress字段。
领取专属 10元无门槛券
手把手带您无忧上云