java.lang.ClassCastException : com. google.gson.internal.LinkedTreeMap 无法转换为模型

标签 java json gson deserialization

查看 Stackoverflow 问题后,我找不到任何解决此问题的解决方案。

我正在尝试使用 GSON 并实现了如下通用方法:

public <T> List<T> deserializeList(String json) {
    Gson gson = new Gson();
    Type type = (new TypeToken<List<T>>() {}).getType();
    return  gson.fromJson(json, type);
}

对此方法的调用是通过以下方式完成的:

parser.<Quote>deserializeList(result)

但是我得到的结果是这样的:

enter image description here

当我尝试访问对象时,出现此错误:

 java.lang.ClassCastException: com.google.gson.internal.LinkedTreeMap cannot be cast to model.Quote

JSON 字符串是:

[
    {
      "id": 269861,
      "quote": "People living deeply have no fear of death.",
      "author": "Anais Nin",
      "genre": "life",
      "tag": null,
      "createdAt": "2016-04-16T13:13:36.928Z",
      "updatedAt": "2016-04-16T13:13:36.928Z"
    }
]

最佳答案

我认为你可以像这样编写方法来显式提供 Type

public <T> List<T> deserializeList(String json, Type type) {
    Gson gson = new Gson();
    return  gson.fromJson(json, type);
}

不过,传递(new TypeToken<List<Model>>() {}).getType();看起来有点乱。

我对类型删除不太熟悉,但我敢打赌这与问题有关。

关于java.lang.ClassCastException : com. google.gson.internal.LinkedTreeMap 无法转换为模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38579491/

相关文章:

java - OOP 设计、Java Swing、国际象棋游戏、instanceof

java - Jackson:使用 UpperCamelCase 编码为 JSON

c# - 如何在 C# 中创建自定义 JSON 以及返回值应该是什么?

JAVA使用Gson解析JSON(流模式)时出错: Expected BEGIN_ARRAY but was BEGIN_OBJECT at line 1 column 2 path $

java - 如何反序列化没有名称和动态的 json 对象?

java - 无法在 Google Cloud Endpoints 的 Endpoint 类中创建多个方法

java - 十六进制字符串到 int 的转换无法正常工作

java - gson.toJson() 抛出 StackOverflowError

java - 解析具有奇怪语法的 XML 文件

linux - 在 shell 脚本中提取键值