当前位置: 首页 > 知识库问答 >
问题:

谷歌Gson反序列化问题

钦永贞
2023-03-14
public class Object1 {
    private int field1;
    private String field2;
    private Object2 object2;
    private boolean field3;
}
    String jsonString = new Gson().toJson(object1, Object1.class);
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:需要一个字符串,但BEGIN_OBJECT位于第1行column 444 path$.c位于com.google.gson.internal.bind.reflectiveTypeAdapterFactory$adapter.read(reflectiveTypeAdapterFactory.java:224)位于com.google.gson.gson.fromjson(gson.java:887)位于)

但为什么?我有没有一个字段的JSON字符串,这不会是一个问题。为什么我不能反序列化?

共有1个答案

欧阳德运
2023-03-14

应为字符串,但为begin_object

field4在您的json字符串中不属于string类型,请使用json to POJO生成器创建适当的对象。

我喜欢使用http://www.jsonschema2pojo.org/

 类似资料:
  • 问题内容: 我想通过Google Gson传输列表对象,但是我不知道如何反序列化泛型类型。 看了这个之后我尝试了什么(BalusC的答案): 但是后来我在日食中遇到了一个错误,说“新的List(){}类型必须实现继承的抽象方法…”,如果我使用快速修复方法,则会得到20个以上的方法存根的怪物。 我很确定有一个更简单的解决方案,但是我似乎找不到它! 编辑: 我现在有 但是,我确实在“ fromJson

  • 问题内容: 由于要执行处理的业务逻辑,因此我正在实现自定义。但是某些部分可以解析为标准方式。这是否可能- 我自己处理一些元素,并让一些嵌套元素自动处理? 这是JSON: 这是项的自定义反序列化器: 现在,我想让GSON解析枚举。我可以自己完成,这只是几行代码,但是我更愿意库做很多。 问题答案: …但是我希望图书馆尽其所能。 好吧,只需使用Gson。 有数据传输对象模式,尤其是Gson映射类,可以完

  • 问题内容: 假设有一个 抽象 类say 和两个非抽象子类say 和。我想通过使用GSON库从json格式“反序列化”它们。 例如,我得到一个对象数组。 有人将其转换为JSON字符串,如下所示: 最后,如果我尝试如下反序列化 那么我就遇到了一个错误,因为GSON默认的反序列化器找到了一个抽象类(即),并且它无法猜测子类的类型。 我该如何解决? PS:我阅读了有关自定义反序列化器的信息,但在这种情况下

  • 假设有一个抽象类,例如和两个非抽象子类,例如和。我想使用GSON库从json格式“反序列化”它们。 例如。我得到一个对象的数组。 有人将其转换为JSON字符串,如下所示: 最后,如果我尝试反序列化如下 然后我有一个错误,因为GSON默认反序列化器找到一个抽象类(即)并且它无法猜测子类类型。 我如何解决这个问题? PS:我读过关于自定义反序列化器的文章,但我不明白如何在这种情况下使用它们。

  • 问题内容: 我如何使用gson 2.2.4序列化和反序列化一个简单的枚举? 问题答案: 根据 GsonAPI文档 ,Gson提供了的默认序列化/反序列化,因此基本上,应使用标准和方法(与其他类型一样)对序列化和反序列化。

  • 问题内容: 我使用了很多不可变的集合,并且很好奇如何使用Gson反序列化它们。由于没有人回答,而且我自己找到了解决方案,因此我正在简化问题并提出自己的答案。 我有两个问题: 如何为所有人编写一个作品? 如何全部注册? 问题答案: 更新:有https://github.com/acebaggins/gson- serializers ,其中涵盖了许多番石榴集合: 如何编写适用于所有Immutable