0
  • 最佳答案

    1.如果之前没问题的话,是后端改了字段的类型,导致原来的json解析出错

    2.后端自己的问题,相同的接口,返回的数据有概率出现类型不统一

    3.自己的类型判断不够完善,参考这篇内容,增强json解析的容错率,无论你传什么类型,都能解析(8条消息) Android 解决Gson解析数据类型不匹配的崩溃问题 JSONException expect beauty but ...._android 跳过gson解析_KabunM的博客-CSDN博客

    1302969105866940416  评论     打赏       波鲁萨利诺.黄猿
    • ccTyL  回复 @波鲁萨利诺.黄猿
      是的,是类型变了,但是接口太多了,我不知道是哪个接口的变了,为什么这个retrofit 不报具体位置
      ccTyL 2023-07-19 15:40   回复 1314408005793603584
  • com.google.gson.JsonSyntaxException: java.lang.NumberFormatException: Expected an int but was 3493085782739496 at line 1 column 5477 path $.data[6].mid
    



    mid是怎么定义的,他是什么类型。JSON中mid是什么?在这个JSON的长度5477位置,这个数据有问题。

    1139423796017500160  评论     打赏       断点
    • ccTyL  回复 @断点
      可是,这么多mid,到底是哪个实体类的mid呢,确实是类型有错这个已经知道了,但是是哪里的类型有错呢
      ccTyL 2023-07-19 11:09   回复 1314408005793603584
    • ccTyL  回复 @断点
      也就是说,这个json,是哪个接口获得的
      ccTyL 2023-07-19 11:09   回复 1314408005793603584
    • 波鲁萨利诺.黄猿  回复 @ccTyL
      你先找到报错的页面,然后复现,找到相应的网络请求,去网络请求里找bean类,实在不行全局搜索一下mid,这个属性在你的实体类里是第6个属性
      波鲁萨利诺.黄猿 2023-07-19 14:20   回复 1302969105866940416
    • ccTyL  回复 @波鲁萨利诺.黄猿
      有道理,确实是可以根据页面缩小搜索范围,但是为什么retrofit不提示具体哪个接口报错
      ccTyL 2023-07-19 15:40   回复 1314408005793603584
    • 断点  回复 @ccTyL
      至于那个接口,自己排查,gson 解释中堆栈,这里已经和网络无关了。如果想知道那个json,自己hook网络请求的响应读取string,释放断点后如果触发错误,就是它了
      断点 2023-07-19 18:21   回复 1139423796017500160
    • ccTyL  回复 @断点
      确实是和网络无关那,我就是想知道哪个接口反序列化失败才提的问题,堆栈也不报。hook起来,那还是算了
      ccTyL 2023-07-20 08:50   回复 1314408005793603584
    • 断点  回复 @ccTyL
      这种情况以前经常遇到,这个时候基本上就是熟悉接口情况下,每一个接口的json都拿出来,然后根据上面报错的字符串位置来定位字段中的数据。
      断点 2023-07-20 09:53   回复 1139423796017500160
    • 断点  回复 @ccTyL
      定位出来基本上都是去骂后端
      断点 2023-07-20 09:53   回复 1139423796017500160
    • ccTyL  回复 @断点
      那累死了,这么多接口[doge] 我不能理解,为什么堆栈不打印具体位置
      ccTyL 2023-07-20 14:24   回复 1314408005793603584
    • 断点  回复 @ccTyL
      他只是一个通用型工具,人家就是负责解析解析json。如果你让他解析出错的时候打印json字符串?这个好像不太适合把。他已经把堆栈打印了,这个堆栈就是他能做的全部。除非你修改工具,在解析的时候打印log。。。。
      断点 2023-07-20 14:29   回复 1139423796017500160
    • ccTyL  回复 @断点
      它是工具没错,但是谁调用了它,这个应该是能知道的啊
      ccTyL 2023-07-20 14:34   回复 1314408005793603584
    • 断点  回复 @ccTyL
      现在就是retrofit点用了他,只不过网络请求工具的成功也是通用型接口。
      断点 2023-07-20 14:38   回复 1139423796017500160
    • ccTyL  回复 @断点
      原来你一直说的是gson啊,我一直说的是retrofit[doge]
      ccTyL 2023-07-20 14:59   回复 1314408005793603584
    • 断点  回复 @ccTyL
      哈哈,肯定是gson,人家只是独立模块,解释json的,没有你接口的信息的,怎么给你搞报错带接口信息嘛[捂脸]
      断点 2023-07-20 18:07   回复 1139423796017500160
    • ccTyL  回复 @断点
      我一直问的都是retrofit,反序列化错误一眼看出来,都不是这儿问题啊[捂脸][捂脸][捂脸] 一眼就知道是实体类mid类型错误,就是想问,哪个接口的实体类错误了 断点大佬没读题啊[捂脸][捂脸]
      ccTyL 2023-07-20 19:21   回复 1314408005793603584
    • 断点  回复 @ccTyL
      反序列化不是retrofit做的。是gson做的。我理解你的意思。你是不理解我的意思。
      断点 2023-07-20 19:52   回复 1139423796017500160
    • 断点  回复 @ccTyL
      网络请求接口负责帮你响应,得到响应数据,然后丢gson,整过过程,框架是不负责打印具体接口的返回值,当然可以自己接管返回(我们是这样,别人不知道),然后打印json,这个时候,打印完了,流程到gson了。当解释出现错误,往上翻最近的log就是请求的回到数据了。也就是框架不负责关键具体业务,也不会暴露具体接口,有需要自己暴露。
      断点 2023-07-20 19:56   回复 1139423796017500160
    • 断点  回复 @断点
      在这个基础上,如果熟悉接口,几分钟完事了[捂脸]
      断点 2023-07-20 19:57   回复 1139423796017500160
    • ccTyL  回复 @断点
      retrofit就是调用gson来反序列化嘛,,就是哪个接口反序列化失败的。我其实不需要打印json,整个流程下来,就是retrofit没有打印出错位置。gson打印出来它负责的,但是retrofit没有。 接口太多的情况下,这真难找,虽然可以找到,但是在想,有没有更优化的方式
      ccTyL 2023-07-20 21:02   回复 1314408005793603584
    • 断点  回复 @ccTyL
      老板把项目接回来了,交给你做,你做出问题了,你去问老板为什么不告诉他错哪里了
      断点 2023-07-21 06:28   回复 1139423796017500160
    • ccTyL  回复 @断点
      retrofit 也算老板的话。。。算了这个问题就这样把,看来断点大佬也没什么办法
      ccTyL 2023-07-21 08:02   回复 1314408005793603584
    • 断点  回复 @ccTyL
      你可以试试自定义解释器,在解释前打log然后出错的前面就是它了
      断点 2023-07-21 08:08   回复 1139423796017500160
    • 断点  回复 @ccTyL
      叫gson适配器还是啥,名词不记得了
      断点 2023-07-21 08:09   回复 1139423796017500160
  • 是不是有个数据是long的,你在Java层定义了int去接受?

    1139423796017500160  评论     打赏       断点
    相关问题
    summer · retrofit
    2020-03-29 07:13 646 2
    斗鱼、芜湖大司马 · retrofit
    2021-04-21 20:49 633 2
    尖沙咀-段坤 · Retrofit
    2022-02-22 14:29 190 2
    希望程序能按我想的那样运行 · Retrofit
    2022-04-10 18:53 336 2
    幻影~ · 安卓
    2024-04-26 19:25 10 4
    deanhu · AOSP
    2024-04-25 21:53 3 10
    幻影~ · 提问
    2024-04-13 20:13 10 2