alibaba / alibaba/fastjson2

[BUG]使用fastjson2字符串转对象出错Index 1034144 out of bounds for length 1034144

Open
#1,741 3 comments 0 reactions 0 assignees View on GitHub
bug
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

Open the contributing 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.