我有一个 Java 类:
public class Object1 {
private int field1;
private String field2;
private Object2 object2;
private boolean field3;
}
我使用 Gson 将一些 Object1 实例保存为 JSON 字符串:
String jsonString = new Gson().toJson(object1, Object1.class);
然后我向 Object1 类添加了新的 String 字段:
public class Object1 {
private int field1;
private String field2;
private String field4;
private Object2 object2;
private boolean field3;
}
现在我无法使用方法将 json 字符串反序列化为 Object1 实例:
Object1 obj1 = new Gson().fromJson(jsonString, Object1.class);
因为 Gson 抛出异常:
System.err: com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: 需要一个字符串,但在第 1 行第 444 列路径 $ .c 处为 BEGIN_OBJECT,位于 com.google.gson.internal.bind.ReflectiveTypeAdapterFactory $ Adapter.read ( ReflectiveTypeAdapterFactory.java:224) at com.google.gson.Gson.fromJson (Gson.java:887) at com.google.gson.Gson.fromJson (Gson.java:852) at com.google.gson.Gson.fromJson (Gson.java:801) 在 com.google.gson.Gson.fromJson (Gson.java:773)
但为什么?我有没有一个字段的 JSON 字符串,这不会成为问题。为什么我不能反序列化它?
事实证明,问题在于混淆。
如果您不使用 @SerializedName 注释结果 JSON 可以是这样的:
{"a":3436213,"b":"some string","c":{................................},"d":true}
我们没有使用它,因为它不是 DTO。在这种情况下,我们使用 JSON 只是为了存储一些不重要的内部数据。但这对我来说是非常有趣的一课。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句