Java 如何禁用从数字到字符串的Gson反序列化
我有课Java 如何禁用从数字到字符串的Gson反序列化,java,gson,deserialization,Java,Gson,Deserialization,我有课 class X { String a; String b; } 我将gson用于对象X的反序列化字符串: new Gson().fromJson("{\"a\": 123, \"b\": 456}", X.class); 以及它的工作。如何禁用Num到字符串的转换?我想获取异常。您需要实现并注册自定义类型适配器: class StrictStringTypeAdapter extends TypeAdapter<Str
class X {
String a;
String b;
}
我将gson用于对象X的反序列化字符串:
new Gson().fromJson("{\"a\": 123, \"b\": 456}", X.class);
以及它的工作。如何禁用Num到字符串的转换?我想获取异常。您需要实现并注册自定义类型适配器:
class StrictStringTypeAdapter extends TypeAdapter<String> {
@Override
public String read(JsonReader in) throws IOException {
JsonToken peek = in.peek();
if (peek == JsonToken.NULL) {
in.nextNull();
return null;
}
if (peek != JsonToken.STRING) {
throw new JsonParseException("Non-string token!");
}
return in.nextString();
}
@Override
public void write(JsonWriter out, String value) throws IOException {
out.value(value);
}
}
以上代码打印:
Exception in thread "main" com.google.gson.JsonParseException: Non-string token!
at com.example.StrictStringTypeAdapter.read(GsonApp.java:33)
at com.example.StrictStringTypeAdapter.read(GsonApp.java:23)
Exception in thread "main" com.google.gson.JsonParseException: Non-string token!
at com.example.StrictStringTypeAdapter.read(GsonApp.java:33)
at com.example.StrictStringTypeAdapter.read(GsonApp.java:23)