Android Studio中Retrofit报错Expected a string but was BEGIN_ARRAY求助
错误原因
这是Gson JSON反序列化时的类型不匹配错误,错误信息已经明确指出问题位置:JSON根路径下的message字段,你定义的接收模型预期该字段是字符串类型,但接口实际返回的该字段是数组格式,Gson解析时遇到数组起始符[和预期类型不符,因此抛出异常。
你当前的RestaurantModel类中message字段定义为String类型,和接口返回结构不匹配。
解决方案
- 优先确认接口返回的
message字段的实际格式:可以先通过抓包或者打印Retrofit返回的原始响应,拿到完整JSON结构,确认message字段的真实类型。 - 如果后端设计的
message本身就是数组类型,直接修改RestaurantModel中的message字段类型即可:将private String message;改为private List<String> message;,同步修改对应的getter、setter方法的参数和返回值类型。 - 如果
message字段存在兼容场景(有时返回字符串、有时返回数组),可以给message字段自定义TypeAdapter,兼容两种类型的解析逻辑,比如遇到数组时自动拼接为字符串,或者统一转为列表存储。
内容的提问来源于stack exchange,提问作者Sensei
相关产品推荐
相关产品推荐

