android报错 Expected BEGIN_OBJECT but was STRING at line 1 column 39 path $-阿里云开发者社区

开发者社区> code_xzh> 正文

android报错 Expected BEGIN_OBJECT but was STRING at line 1 column 39 path $

简介:       我在使用retrofit和Gson配合时,出现了这个问题,疑惑中乱七八糟瞎搞了一个下午没有解决。期间怀疑Gson解析不能使用泛型(因为我的解析使用了泛型),后来又觉得可能是我的关键字正好是解析器的某个关键字导致的异常,也打算过自定义Gson的解析过程,其实这些都不是。         第二天才搞明白,真正的问题是我的数据结构有问题,或者说我的解析出现了问题。  
+关注继续查看

      我在使用retrofit和Gson配合时,出现了这个问题,疑惑中乱七八糟瞎搞了一个下午没有解决。期间怀疑Gson解析不能使用泛型(因为我的解析使用了泛型),后来又觉得可能是我的关键字正好是解析器的某个关键字导致的异常,也打算过自定义Gson的解析过程,其实这些都不是。

        第二天才搞明白,真正的问题是我的数据结构有问题,或者说我的解析出现了问题。

        例如下面Json字符串:

        {"code":1,"info":"success","results":{"id":"1","name":"hehe"}}

        results对应的应该是一个实体类,如果这个时候想把他解析为String或者List就会出现异常。

        如果参考使用GsonForm处理后的数据模型,几乎不会出现问题;加入result后面的内容可能在请求时会因为某些原因会存在格式上的变化,这个时候就有出现该异常的风险。Gson中,关键字后面出现""引起来的内容将会被只认为是STRING,“{}”只被认为是类,“[]”只被认为是List,这个几乎是强制性的。

        就是说如果你的实体预计是获取String的变量,但是关键字后面对应的却出现了“{”或“[”,那么这个转换将被认为是错误的,抛出异常。

        解决办法:后台输出稳定的Gson格式。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
【POI】导出xls文件报错:The maximum number of cell styles was exceeded. You can define up to 4000 styles in a .xls workbook
使用POI导出xls文件,由于数据过多,导致导出xls报错如下: The maximum number of cell styles was exceeded. You can define up to 4000 styles in a .xls workbook   原因: 代码中创建 HSSFCellStyle cellStyle = hssfWorkbook.createCellStyle(); 次数过多,导致报错。
2598 0
Crystal Reports拉报表报错:Error detected by database DLL
问题描述: 最近在使用Crystal Reports打印报表时,提示错误信息:“Error detected by database DLL.” 如下图: 经查找,是因为数据库名称不同造成的; 用户的测试环境使用的库名称为ClaimsReport; 我们本地使用的库名称为Claims;   解决方案: 打开报表工具Crystal Reports 8.5,进入Database->Set Location界面,如下图:   把红框中数据库名称去掉,然后点击按钮【Done】即可。
1048 0
【jsp】jsp访问到之后报错如下:Uncaught SyntaxError: Unexpected token <
jsp访问到之后报错如下: Uncaught SyntaxError: Unexpected token
2070 0
阿里云服务器端口号设置
阿里云服务器初级使用者可能面临的问题之一. 使用tomcat或者其他服务器软件设置端口号后,比如 一些不是默认的, mysql的 3306, mssql的1433,有时候打不开网页, 原因是没有在ecs安全组去设置这个端口号. 解决: 点击ecs下网络和安全下的安全组 在弹出的安全组中,如果没有就新建安全组,然后点击配置规则 最后如上图点击添加...或快速创建.   have fun!  将编程看作是一门艺术,而不单单是个技术。
4485 0
+关注
code_xzh
对前端移动客户端技术比较擅长。著有《React Native移动开发实战》和《Kotlin入门与实战》和《Weex跨平台实战》,《React Native移动开发进阶》即将出版,正在努力完成《Flutter跨平台开发实战》
719
文章
1
问答
文章排行榜
最热
最新
相关电子书
更多
文娱运维技术
立即下载
《SaaS模式云原生数据仓库应用场景实践》
立即下载
《看见新力量:二》电子书
立即下载