fastjson2 icon indicating copy to clipboard operation
fastjson2 copied to clipboard

[QUESTION] fastjson1.x升级为fastjson2.x后,JSON.parseArray对错误的JSON字符串解析不抛异常了,如何兼容?

Open huisman6 opened this issue 4 months ago • 2 comments

请描述您的问题

以下代码在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>,不会抛出异常。

是否可以增加一个选项,遇到反序列化类型不一致时抛出异常?

huisman6 avatar Aug 15 '25 08:08 huisman6

https://github.com/alibaba/fastjson2/issues/2535 @huisman6 应该是这里的改动,造成目前的结果。

mymde avatar Aug 18 '25 01:08 mymde

以 数据{"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

mymde avatar Aug 18 '25 10:08 mymde