java gson序列化_gson 自定义特定的序列化的方式

该博客展示了如何实现JsonSerializer和JsonDeserializer,以自定义Gson对Student类的序列化和反序列化过程。通过创建两个静态内部类,实现了将Student对象转换为包含类型信息的Json对象,并能从Json字符串还原Student对象的功能。
摘要由CSDN通过智能技术生成

用:JsonSerializer/JsonDeserializer

public static class StudentJsonSerializer implements JsonSerializer {

@Override

public JsonElement serialize(Student src, Type typeOfSrc, JsonSerializationContext context) {

final JsonObject propEle = new JsonObject();

propEle.addProperty("id", src.getId());

propEle.addProperty("name", src.getName());

final JsonObject root = new JsonObject();

root.addProperty("Type", "Student");

root.add("Property", propEle);

return root;

}

}

public static class StudentJsonDeserializer implements JsonDeserializer {

public Student deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException {

final JsonObject root = json.getAsJsonObject();

JsonObject propEle = root.getAsJsonObject("Property");

Student student = new Student();

student.setId(propEle.get("id").getAsInt());

student.setName(propEle.get("name").getAsString());

return student;

}

}

@Test

public void test_1010000010436869() {

Gson gson = new GsonBuilder().registerTypeAdapter(Student.class, new StudentJsonSerializer())

.registerTypeAdapter(Student.class, new StudentJsonDeserializer()).create();

Student student = new Student();

student.setId(1);

student.setName("StuName");

String json = gson.toJson(student);

System.out.println(json);

Student student2 = gson.fromJson(json, Student.class);

System.out.println(student2);

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值