[alibaba/fastjson]JSON.isValid()严重BUG

2024-05-23 91 views
4

版本: 1.2.60(包含)之后的所有版本 BUG描述: JSON.isValid("12312321")入参为纯数字字符时,恒返回 true; 1.2.58暂未发现此问题

回答

9

@deprecated Please use {@link com.alibaba.fastjson.JSONValidator} instead. 过时了,所以不使用它吧。

8

不过我试了,任意整数验证结果都是true。然后我在json.cn验证,纯数字也算json,所以其实是1.2.58之前的才算是BUG吧。 图片

2

68的版本给你抛异常,这个操作有点意思了...

JSONValidator jsonValidator = JSONValidator.fromUtf8(jsonStr.getBytes()); return jsonValidator.validate();

有意思的是,过时的校验方法,存在问题 System.err.println(JSON.isValid("{ggg23: wer,}")); 这段代码竟然反会true

9

Number/String 都是合法的Json,类型是Value

如果要只需要Array/Object类型,可以这样写

JSONValidator jsonValidator = JSONValidator.from(jsonString);
boolean isValid = jsonValidator.validate() && !ObjectUtils.nullSafeEquals(jsonValidator.getType(), Type.Value)