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

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

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

        例如下面Json字符串:

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

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

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

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

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

时间: 2024-10-07 23:15:49

android报错 Expected BEGIN_OBJECT but was STRING at line 1 column 39 path $的相关文章

客户端-代码出现 java.lang.IllegalStateException: Expected BEGIN_ARRAY but was STRING at line 1 column 21

问题描述 代码出现 java.lang.IllegalStateException: Expected BEGIN_ARRAY but was STRING at line 1 column 21 这行代码是ResponseObject> object=new GsonBuilder().create().fromJson(arg0.result, new TypeToken>>(){}.getType()); 求问什么原因有什么办法处理吗 解决方案 ResponseObject<

python-Python使用正则表达式报错expected string or buffer

问题描述 Python使用正则表达式报错expected string or buffer [求大神们帮帮忙啊,用正则表达式删除文本的特定片段报错,把search那里用str强制转换也不行] 解决方案 myfile是_io.TextIOWrapper类型,re.search()并不支持这个类型,也不支持list. 倒是可以用re.search('...', myfile.read()),或者可以遍历myfile的每一行: for line in myfile: re.search('...',

游标-android报错真的不知道怎么回事,急求大神解释 ,明天要完成任务的

问题描述 android报错真的不知道怎么回事,急求大神解释 ,明天要完成任务的 java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.mymail/com.example.mymail.FeedbackShow}: android.database.sqlite.SQLiteException: no such table: feedbacklist (code 1): while comp

关于使用cocos2d-x创建android报错问题

问题描述 关于使用cocos2d-x创建android报错问题 我是cocos2d-x新手,配好环境等等之后,使用cocos2d-x里面的create-android-project.bat文件新建项目,可是最后有两行报错的代码. 求达人帮忙 这是怎么回事. 代码如下 etc/profile.d/lang.sh: line 21: /usr/bin/locale: No such file or directory etc/profile.d/tzset.sh: line 24: /usr/bi

cocos2d-x-3.8编译android报错,求大神帮帮忙

问题描述 cocos2d-x-3.8编译android报错,求大神帮帮忙 创建了一个cocos2d项目,添加了几行代码,在vs2012下运行正常,编译win32也正常,但是一编译android就报错 NDK用android-ndk-r9d和android-ndk-r10两个版本试过,估计不是ndk的原因,其他的原因也想不出来,求大神帮忙解决 这是报错的原文 E:cocosfu100>cocos compile -p android -j 4 执行命令:compile 编译模式:debug 使用

android报错

问题描述 android报错:com.easemob.exceptions.EaseMobException: conflict 解决方案 这个是注册的用户已存在的报错,检查一下代码.

C# 求解图片显示,报错为:无法将system.string类型转换为system.byte[] 类型

问题描述 我是想在点击表单的时候,显示相应的照片,第15列存储的是image格式数据,代码和报错截图如下,请帮忙解答,谢谢! 解决方案 解决方案二:图片应该是一个实实在在物理存在的图片转为字节数组,string是转不了的.解决方案三:既然系统已经提示Value是String,那你就Console.WriteLine(Value),确认下Value是什么呗如果输出System.Byte[]或其他的类型名说明加载的时候已经ToString()了如果是个base64的字符串,那就先arr=Conver

【c3p0】报错:java.io.FileNotFoundException: Resource not found at path &amp;#39;/mchange-log.properties&amp;#39;

  配置项目启动初始,报错如下: 1 java.io.FileNotFoundException: Resource not found at path '/mchange-commons.properties'. 2 at com.mchange.v2.cfg.BasicPropertiesConfigSource.propertiesFromSource(BasicPropertiesConfigSource.java:64) 3 at com.mchange.v2.cfg.BasicMul

android报错-android开发报错log信息如下,小弟新手,求问是什么错误,错在哪,如何解决

问题描述 android开发报错log信息如下,小弟新手,求问是什么错误,错在哪,如何解决 02-21 20:41:34.969: W/dalvikvm(20654): threadid=11: thread exiting with uncaught exception (group=0x40abf228) 02-21 20:41:34.969: E/AndroidRuntime(20654): FATAL EXCEPTION: Thread-6366 02-21 20:41:34.969: