jsonUnexpected token,字符串编码不一致等的终极解决办法

本文记述了一次因字符集编码问题导致的JSON解析失败经历。通过对异常JSON数据的深入分析,最终定位到第三方APP修改了字符集编码,从而引发了解析错误。文章还提供了一种快速验证字符串编码是否正确的实用方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近一个正常运行了半年的系统,和第三方APP进行的通信程序,一直运行的好好的,下午突然就崩了~~~通过日志排查是解析过程中出错了,但是我的程序各个数据库交互环节以及数据强制转换的环节都做了判断,额,复制出来日志上的各种接收数据,通过“肉眼”扫描了N多次,没问题啊,甚至开始对自己编写的“无敌”程序产生怀疑了,呵呵。

但是在网上的有些json校验格式化工具上提示Unexpected token,虽然大部分工具还是能校验通过。但是还是把数据复制到我的eclipse下进行运行,果然发现转换json的环节出错了!!!但是在IDE下肉眼检查了每一个大括号,中括号,冒号,双引号,都没有发现问题!!!

后来部署到程序下面进行运行,发现不能正常转换,遂和同事WJW进行了沟通,然后两人又是半天进行排查,没个结果,思来想去我们都知道可能是编码的问题!但是谁也不知道如何下手,在出错的json校验网页,把第一层的左括号删除(直至第一个字符串),用半角左括号进行了替换,发现可以正常解析了!!!

  再后来问题排查出来了,和APP方进行了沟通,你们是不是修改程序的字符集编码了导致我方收到数据无法解析???对方经过排查,确实是他们有一个开发人员对代码进行过修改,然后他们听从我们的意见对该文件恢复为UTF-8编码,果然程序又可以正常运行了。

后来大神WJW编写了个字符串转byte的小程序完美的解释了这一现象,以后大家不用走弯路了,直接这么做就能告诉对方“你的字符串编码有问题”。

废话不多说了,直接上图!

先看看正常情况下的json字符串的Byte数组是啥样的?可以从下图中看见是123,34,101。。


然后我们再看看那个坑爹的字符串是啥样???通过下图我们看见前边明显的多余了3个奇怪的字节。。。

们可以把这图直接丢给对方的开发人员,他们会哑口无言!!!

这种方法适用于所有字符串编码不一致的场景。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值