[BUG]使用fastjson2字符串转对象出错Index 1034144 out of bounds for length 1034144
- Dominant language
- Java
- Stars
- 4.4k
- Forks
- 613
- Avg merge
- 1d 22h
- Merged PRs (30d)
- 6
Description
### 问题描述
使用 JSON.parseObject(sJson);把json转换为对象的时候出现了错误如下:
"java.lang.Exception: java.lang.ArrayIndexOutOfBoundsException: Index 1034144 out of bounds for length 1034144 com.alibaba.fastjson2.JSONReaderUTF16.readNull(JSONReaderUTF16.java:4981)com.alibaba.fastjson2.JSONReader.readObject(JSONReader.java:2315)com.alibaba.fastjson2.JSONReader.readArray(JSONReader.java:2548)com.alibaba.fastjson2.JSONReader.read(JSONReader.java:2116)com.alibaba.fastjson2.JSON.parseObject(JSON.java:244)
注:这个json文件1.91MB
### 环境信息
- OS信息: [e.g.:CentOS 8.4.2105 4Core 3.10GHz 16 GB]
- JDK信息: [e.g.:Openjdk 14]
- 版本信息:[e.g.:Fastjson2 2.0.39]
### 重现步骤
超大的json文件肯定出错。
### 期待的正确结果
能支持大文件转对象
### 相关日志输出
"java.lang.Exception: java.lang.ArrayIndexOutOfBoundsException: Index 1034144 out of bounds for length 1034144 com.alibaba.fastjson2.JSONReaderUTF16.readNull(JSONReaderUTF16.java:4981)com.alibaba.fastjson2.JSONReader.readObject(JSONReader.java:2315)com.alibaba.fastjson2.JSONReader.readArray(JSONReader.java:2548)com.alibaba.fastjson2.JSONReader.read(JSONReader.java:2116)com.alibaba.fastjson2.JSON.parseObject(JSON.java:244)
Contributor guide
Research direction
Start by reproducing JSON.parseObject(sJson) with a JSON input larger than 1.91 MB, then trace the reported stack through JSON.java, JSONReader.readArray/readObject, and JSONReaderUTF16.java at line 4981. Done means the large JSON file is converted to an object without the reported ArrayIndexOutOfBoundsException.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- java
- Domain
- backend
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 30/100