java.lang.IllegalStateException: Expected BEGIN_OBJECT but was BEGIN_ARRAY应该怎么解决呢

想问下大家

final String result = response.body().string();
Gson gson = new Gson();
Type type = new TypeToken<List<Message>>(){}.getType();
List<Message> messages = gson.fromJson(result, type);

明明我此处的代码是这样,但还是报错java.lang.IllegalStateException: Expected BEGIN_OBJECT but was BEGIN_ARRAY应该怎么解决呢?

json串与你想转成的格式不匹配,先打印 result 看看内容

某个是数组的字段定义的属性不是数组,打印返回的数据,和Java的属性对比下

  • 这篇博客: java.lang.IllegalStateException: Expected BEGIN_ARRAY but was BEGIN_OBJECT at line 1 column 2 path $中的 1、出现的场景 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 在请求网络时候用的Retrofit,然后需要定义一个接受返回数据的bean,因为是POST请求,所以第一次请求并不知道返回的数据结构,所以我直接将返回的数据泛型定义为String类型,于是就出现了如下异常信息

    java.lang.IllegalStateException: Expected BEGIN_ARRAY but was BEGIN_OBJECT at line 1 column 2 path $ data

是我自己搞错了,message希望获取的是对象,但我的是列表嵌套列表,所以出现了故障