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

使用Gson反序列化具有列表的对象失败

梁宪
2023-03-14

我试图将JSON字符串反序列化为Java对象,但遇到以下异常:

JsonDeserializer com.google.gson.DefaultTypeAdapters$CollectionTypeAdapter@306A30C7未能对给定类型类java.util.ArrayList的json对象[“93”]进行反序列化

我的主文件

public static void main(String[] args) throws IOException {
    String s = "{\"intents\":[\"93\"],\"_id\":\"frequestQueries\"}";
    Gson gson = new Gson();
    JavaObject a = gson.fromJson(s, JavaObject.class);
    System.out.println(a);

应该表示JSON的类是:

public class JavaObject {

    public ArrayList intents;
    private String _id ;

    public JavaObject(){
        intents = new ArrayList();
        intents.add(93);
        _id = "frequestQueries";
    }
}

我尝试了SO上给出的解决方案,但也有类似的例外,但我无法找出确切的原因。我试过这个,但似乎没有给出具体的解决方案。我的Gson版本是1.4。

共有1个答案

公孙高轩
2023-03-14

我发布了我自己的问题的解决方案,因为许多在Gson反序列化中使用ArrayList的人都遇到了同样的问题。只需更新Gson版本,它将处理Gson反序列化问题。

 类似资料:
  • 我的目标是让这个电话“只是工作”。

  • 其中备注是对象内部的vavr列表字段。 现在,如果尝试将相同的值反序列化到对象中,则会出现错误: 当尝试反序列化时,为什么serified JSON文本不起作用? 在Java代码中有没有其他方法可以将vavr对象打印成文本格式并将其转换回POJO?

  • 我一辈子都想不出如何反序列化这一点: 到,其中PetPlayer包含一个名为“pets”的多映射,结构如下;。这里,PetType是枚举,Pet是一个抽象类,具有多个实现。 我尝试使用这两个序列化器和反序列化器。 我非常感谢任何帮助:)

  • 问题内容: 我有一个名为的类,该类具有一个作为参数的构造函数: 具有以下属性: 并且是我的应用程序的其他类,并具有以下构造函数: ,并且是的子类。 我想用Gson 反序列化数组,所以我写道: 以定义为: 调试时,实例具有正确的“ MainActivity”作为上下文,而其成员变量的上下文为null。 Gson 使用正确的构造函数创建了对象,但使用默认的无参数构造函数创建了实例。我怎样才能解决这个问

  • 我有一个名为PageItem的类,它有一个构造函数,该构造函数将上下文作为参数: 具有以下属性: 新闻提供者(Newsprovider)和主题(Topic)是我的应用程序的其他类,具有以下构造函数:

  • 问题内容: 我正在尝试使用Gson将涉及多态的对象序列化/反序列化为JSON。 这是我的序列化代码: 结果如下: 序列化大多的作品,除了它缺少继承成员的内容(尤其是和字符串丢失)。这是我的基类: 这是我的继承类(ObixOp)的样子: 我意识到我可以为此使用适配器,但是问题是我正在序列化基类type的集合。从中继承大约25个类。我该如何优雅地进行这项工作? 问题答案: 我认为自定义序列化器/反序列