fastjson2
fastjson2 copied to clipboard
[QUESTION] fastjson1.x升级为fastjson2.x后,JSON.parseArray对错误的JSON字符串解析不抛异常了,如何兼容?
请描述您的问题
以下代码在fastjson1.x时会抛出异常,业务会捕捉异常进行降级处理,升级到2.x后,不抛异常了,导致分支代码没执行到。
//入参数据格式有两种: {"readNum":0,"userIds":[1,2,3]} 或者 [1,2,3]
//期望第一种数据过来的时候报错,业务会做特殊处理了
List<Integer> userIds = new ArrayList<>();
try {
userIds = JSON.parseArray(event, Integer.class);
} catch (Exception e) {
//异常数据,执行降级处理逻辑。
}
fastjson2.x 执行 JSON.parseArray时会返回一个List<JSONObject>,不会抛出异常。
是否可以增加一个选项,遇到反序列化类型不一致时抛出异常?
https://github.com/alibaba/fastjson2/issues/2535 @huisman6 应该是这里的改动,造成目前的结果。
以 数据{"readNum":0,"userIds":[1,2,3]}为例:
fastjson v1 1.x 版本抛出异常,fastjson v1 2.x 版本会返回[ {"readNum":0,"userIds":[1,2,3]}] ,而fastjson2 延续了 fastjson v1 2.x 的处理结果也是 返回 [ {"readNum":0,"userIds":[1,2,3]}]。针对于目前情况,需要把fastjson2 改为 v1 1.x 版本的结果吗? @wenshao
fastjson2 的处理issue 是 https://github.com/alibaba/fastjson2/issues/2535