Results 3 comments of 离殇

原先编码是在fastjson 1.2.50,升级到fastjson2 兼容版本会出现业务解析异常,提供的只是部分关键代码,如果改动编码可能会影响整体业务功能,回退到fastjson 1.2.83异常业务恢复正常,期望能在不改动原先编码的基础上实现兼容版本对fastjson 1.x的兼容

你的定位不完全正确,Feature.NonStringKeyAsString 特性影响的是 JSON 对象的 key,这里受影响的好像是 JSON 对象的 value,你们做兼容的时候应该是没有考虑到JSON 数据格式不合法的情况(例如键非数字、值非整数,都会导致类型转换异常)。猜测:在 fastjson 1.x 版本中,JSON 中的数值会被解析成 Integer 类型,entry.getValue() 返回的是 Integer 对象,而在 fastjson2,JSON 中的数值可能被解析成 Long 或 Double 等其他类型,entry.getValue() 返回的不是 Integer,而可能是 Long、Double 等其它类型,导致强制转换 (Integer) entry.getValue()...

抱歉不能提供具体数据(内部业务,我也是社畜打工人,🐂🐴)。fastjson2 兼容版本能解析我提到的情况,但是解析的不完全正确,存在部分解析正确部分是错误的情况,光看是看不出来的,可能结合具体业务更好判断。猜测是两个版本对数值类型的处理策略不同导致的,fastjson 1.x 解析的更严格,数值被解析成 Integer 类型,fastjson2 相较宽泛些导致的,就像是 Integer 类型的 1 和 Long 类型的 1,虽然都是 1,但存在细微区别,这些信息应该够你修复问题了,润...