Gson 使用 JsonSerializer 接管序列化过程,JsonDeserializer 接管反序列化过程
1 JsonSerializer
测试代码:
@Test
public void test() throws IOException {
JsonSerializer<String> stringJsonSerializer = new JsonSerializer<String>() {
@Override
public JsonElement serialize(String arg0, Type arg1, JsonSerializationContext arg2) {
return new JsonPrimitive(arg0 + "_ADD");
}
};
Gson gson = new GsonBuilder()
.registerTypeAdapter(String.class, stringJsonSerializer)
.create();
System.out.println(gson.toJson("JSON"));
}
运行结果: 
2 JsonDeserializer
测试代码:
@Test
public void test() throws IOException {
Gson gson = new GsonBuilder()
.registerTypeAdapter(String.class, new JsonDeserializer<String>() {
@Override
public String deserialize(JsonElement json, Type type, JsonDeserializationContext context)
throws JsonParseException {
String value = json.getAsString();
if (value.equals("KEY")) {
return "That's it!";
}
return "Forget it...";
}
}).create();
System.out.println(gson.fromJson("XYZ", String.class));
System.out.println(gson.fromJson("KEY", String.class));
System.out.println(gson.fromJson("ANY", String.class));
}
运行结果: 
本文介绍如何使用Gson的JsonSerializer来定制序列化过程,并通过JsonDeserializer来控制反序列化的实现方式。文章通过具体示例展示了如何为特定类型注册自定义的序列化器与反序列化器。

4311

被折叠的 条评论
为什么被折叠?



