用: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);
}