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数据:

GsonConverterFactory封装Gson解析抛出 com.google.gson.internal.LinkedTreeMap cannot be cast to XXX_第1张图片

 

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

GsonConverterFactory封装Gson解析抛出 com.google.gson.internal.LinkedTreeMap cannot be cast to XXX_第2张图片

 

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

问题分析

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

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

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

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

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

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

无字段名的二维数组

你可能感兴趣的:(填坑)