GsonConverterFactory封装Gson解析抛出 com.google.gson.internal.LinkedTreeMap cannot be cast to XXX

原因在于解析的JSON数据结构为无字段名称的二维数组,解析数据时无法从 com.google.gson.internal.LinkedTreeMap强转为XXX(标题中的data class),归根到底就是,当二维数组均无字段名称的时候,第二维数据就无法通过@SerializedName从json映射到相应的data class存放

 

  解析的JSON数据:

 

解决方法,服务器把第二维数据放到一维显示:

 

再修改相应代码,代码通过字段为pic_list映射的一维数组取出数据进行使用即可。

问题分析

问题产生的原因在于后台人员出于“pic_list”字段下要存放多张图片的"Image_Url"等字段键值,所以想法为一维数据作为

多张图片存放的空间(区分),二维放数据就实现需求了。按照JSON的语法构建数据也不会出错。但是在使用GsonConverterFactory封装数据时就会出现com.google.gson.internal.LinkedTreeMap无法强转为XXX 的错误,

个人推测可能GsonConverterFactory的处理逻辑是无法映射无字段名的二维数组的,这也符合实际需要的设计要求,

设想,如果你二维数组的一二维度都没有使用字段名去赋予具体的实际意义,只是在第二维存放数据,那么,是不是把

数据存放在第一维度,删去第二维度就好了,你想要去区分已经放在一维的数据,给予特征字段或者添加属于它的

属性数组就在一维数据下添加就好了,无需使用无字段名的二维数组。所以觉得日后在使用JSON时应该避免使用

无字段名的二维数组

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值