fastjson2
fastjson2 copied to clipboard
[BUG]json字符串中,数组元素后面带有注释时反序列化失败
问题描述
简要描述您碰到的问题。
环境信息
请填写以下信息:
- OS信息: Windows10 22H2
- JDK信息: Openjdk 22
- 版本信息:Fastjson2 2.0.57
重现步骤
字符串中数组元素有注释时反序列化失败 { "a": [ "bbb", "ccc", // 这里有注释 "ddd" ] }
//可在此输入示例代码
public static void main(String[] args) {
String str = "{\n" +
"\t\"a\": [\n" +
"\t\t\"bbb\",\n" +
"\t\t\"ccc\", // 这里有注释\n" +
"\t\t\"ddd\"\n" +
"\t]\n" +
"}";
JSONObject jsonObject = JSON.parseObject(str);
System.out.println(jsonObject.toString());
}
### 期待的正确结果
可以正常反序列化
### 相关日志输出
"C:\Program Files\java\openjdk-22.0.1\bin\java.exe" "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA 2025.1.1.1\lib\idea_rt.jar=49718" -Dfile.encoding=UTF-8 -Dsun.stdout.encoding=UTF-8 -Dsun.stderr.encoding=UTF-8 -classpath G:\develop\ideaWorkspace\MavenProject\ProjectOne\target\classes;C:\Users\Administrator\.m2\repository\com\alibaba\fastjson2\fastjson2\2.0.57\fastjson2-2.0.57.jar org.example.TestJson2
Exception in thread "main" java.lang.NullPointerException: Cannot invoke "java.util.List.add(Object)" because "list" is null
at com.alibaba.fastjson2.JSONReader.add(JSONReader.java:2795)
at com.alibaba.fastjson2.JSONReader.readArray(JSONReader.java:2758)
at com.alibaba.fastjson2.JSONReader.read(JSONReader.java:2218)
at com.alibaba.fastjson2.JSON.parseObject(JSON.java:348)
at org.example.TestJson2.main(TestJson2.java:16)
Process finished with exit code 1
#### 附加信息
fastjson2 2.0.52/2.0.54版本均有这个错误
你好,JSON格式数据应该不支持注释的,可以用一些伪注释
但是fastsjon 1.2.83是支持的,fastjson2这个特性反而退化了么; 主要是处理JSON5文件,里面会有一些注释
但是fastsjon 1.2.83是支持的,fastjson2这个特性反而退化了么; 主要是处理JSON5文件,里面会有一些注释
之前看项目的作者温老师说,fastjson2会去掉一些少有人使用的特性,不知道是不是因为这个
抱歉哈,突然发现这个bug,好像已经被解决了(https://github.com/alibaba/fastjson2/issues/3485),但是要等到2.0.58版本发布了
https://github.com/alibaba/fastjson2/releases/tag/2.0.58 问题已修复,请用新版本