[BUG] JSON 文件中注释 无法正确处理
mancong opened this issue · comments
mancong commented
问题描述
简要描述您碰到的问题。
自定义 JSON 文件(字符) 中 注释 无法正确的识别处理。
环境信息
请填写以下信息:
- OS信息: [e.g.:Win10]
- JDK信息: [e.g.:Openjdk 1.8.0_301]
- 版本信息:[e.g.:Fastjson2 2.0.2]
重现步骤
如何操作可以重现该问题:
JSON.parse("{\"name\":{// 这是个注释 \"one\":2020,\"two\":\"red!\"}}");
{
\"name\": { //这是个注释
\"one\": 2020,
\"two\": \"red!\"
}
}
期待的正确结果
对您期望发生的结果进行清晰简洁的描述。
正确解析 JSON 数据
相关日志输出
请复制并粘贴任何相关的日志输出。
com.alibaba.fastjson2.JSONException: illegal input offset 6, char /
at com.alibaba.fastjson2.JSONReader.readObject(JSONReader.java:1092)
at com.alibaba.fastjson2.JSONReader.readObject(JSONReader.java:1077)
at com.alibaba.fastjson2.JSONReader.readObject(JSONReader.java:1077)
at com.alibaba.fastjson2.JSONReader.readObject(JSONReader.java:1077)
at com.alibaba.fastjson2.JSONReader.readObject(JSONReader.java:1077)
at com.alibaba.fastjson2.reader.ObjectReaderImplMap.readObject(ObjectReaderImplMap.java:421)
at com.alibaba.fastjson2.JSON.parseObject(JSON.java:74)
at net.uncle.module.cache.DefaultCacheLoader.load(DefaultCacheLoader.java:35)
附加信息
如果你还有其他需要提供的信息,可以在这里填写(可以提供截图、视频等)。
请问此问题是否属于BUG 类别?
Shaojin Wen commented
目前是不只支持这个非标格式,但为了方便使用,这个会在后面的版本中支持的
Shaojin Wen commented
已经部分支持注释,并且能跑过你这个case,但支持注释还是实现不完整的,你可以2.0.3-SNAPSHOT版本验证
https://oss.sonatype.org/content/repositories/snapshots/com/alibaba/fastjson2/fastjson2/2.0.3-SNAPSHOT/
mancong commented
感谢回复。使用 2.0.3-SNAPSHOT 确实可以 通过。
顺带问一下,有没有针对 JSON Schema 相关的 规划(例如:校验,生成,运算等操作)呢?
Shaojin Wen commented
你提个issue吧,但应该要晚一点,可能6~9月份这个阶段做
mancong commented
问题描述
2022-05-17 更新状况:
2.0.3 + 2.0.4-SNAPSHOT 版本 经过测试,在某些情况 依旧会在某些场景下存在问题。
重现步骤
方法如下:
JSON.parse("//{"type_array_array":[["abcd","abcd"],[null,"abcd"]]}");
压缩格式:
//{"type_array_array":[["abcd","abcd"],[null,"abcd"]]}
非压缩格式:
//{
// "type_array_array": [
// ["abcd", "abcd"],
// [null, "abcd"]
// ]
//}
期待的正确结果
正确解析 JSON 数据
相关日志输出
com.alibaba.fastjson2.JSONException: illegal input, offset 54, char �
at com.alibaba.fastjson2.reader.ObjectReaderImplMap.readObject(ObjectReaderImplMap.java:381)
at com.alibaba.fastjson2.JSON.parseObject(JSON.java:82)
at net.uncle.module.ValidJsonQTest.testValid(ValidJsonQTest.java:36)
附加信息
A. 同时发现 任意层级的大括号('{}') 非成对存在时,也会报该类型异常。
例如:
//{
// "type_array_array": [
// ["abcd", "abcd"],
// [null, "abcd"]
// ]
B. 若是认为注释掉任意的定界符号 时,怎会出现 "illegal input offset XX, char }"
- 实际该提示文字描述可能不是很直观,但是出错业务 是正确的
例如:
{
"type_array_array": {
"one":["abcd", "abcd"],
"two": [null, "abcd"]
// }
}
提示异常:
com.alibaba.fastjson2.JSONException: illegal input offset 92, char }
at com.alibaba.fastjson2.JSONReader.readObject(JSONReader.java:1227)
at com.alibaba.fastjson2.reader.ObjectReaderImplMap.readObject(ObjectReaderImplMap.java:427)
at com.alibaba.fastjson2.JSON.parseObject(JSON.java:82)
at net.uncle.module.ValidJsonQTest.testValid(ValidJsonQTest.java:36)