Skip to content

[BUG] java.lang.StringIndexOutOfBoundsException: Range [27635, 27635 + 22) out of bounds for length 27648 #3595

@lsj0736

Description

@lsj0736

问题描述

简要描述您碰到的问题。
使用fastjson2序列化报错,添加Feature.PrettyFormat能正常返回,移除出现异常

环境信息

请填写以下信息:

  • OS信息: [e.g.:win10 64]
  • JDK信息: [e.g.:Openjdk 21.0.4]
  • 版本信息:[e.g.:Fastjson2 2.0.57]

重现步骤

如何操作可以重现该问题:

  1. 使用 xxx.xxx 方法
  2. 输入 ... 数据
  3. 出现 ... 错误
//可在此输入示例代码
import cn.hutool.core.io.file.FileReader;
import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONWriter.Feature;
import lombok.Data;
import org.junit.jupiter.api.Test;

import java.math.BigDecimal;
import java.util.Map;

public class FastJsonDome {

    @Data
    public static class Dome {
        private Map<String, BigDecimal> balanceMap;
    }

    @Test
    public void test() {
        String string = new FileReader("

[新文件 16.txt](https://github.com/user-attachments/files/20836020/16.txt)

新文件 16.txt").readString();
        Dome tradeData = JSON.parseObject(string, Dome.class);
        String jsonString = JSON.toJSONString(tradeData);
        String jsonString1 = JSON.toJSONString(tradeData, Feature.PrettyFormat);
        String jsonString2 = JSON.toJSONString(tradeData.balanceMap);
    }

}

期待的正确结果

对您期望发生的结果进行清晰简洁的描述。
正常返回

相关日志输出

请复制并粘贴任何相关的日志输出。
java.lang.StringIndexOutOfBoundsException: Range [27635, 27635 + 22) out of bounds for length 27648

at java.base/jdk.internal.util.Preconditions$1.apply(Preconditions.java:55)
at java.base/jdk.internal.util.Preconditions$1.apply(Preconditions.java:52)
at java.base/jdk.internal.util.Preconditions$4.apply(Preconditions.java:213)
at java.base/jdk.internal.util.Preconditions$4.apply(Preconditions.java:210)
at java.base/jdk.internal.util.Preconditions.outOfBounds(Preconditions.java:98)
at java.base/jdk.internal.util.Preconditions.outOfBoundsCheckFromIndexSize(Preconditions.java:118)
at java.base/jdk.internal.util.Preconditions.checkFromIndexSize(Preconditions.java:397)
at java.base/java.lang.String.checkBoundsOffCount(String.java:4853)
at java.base/java.lang.String.getChars(String.java:1709)
at com.alibaba.fastjson2.JSONWriterUTF16.writeDecimal(JSONWriterUTF16.java:1086)
at com.alibaba.fastjson2.writer.ObjectWriterImplMap.write(ObjectWriterImplMap.java:547)
at com.alibaba.fastjson2.writer.OWG_1_1_Dome.write(Unknown Source)
at com.alibaba.fastjson2.JSON.toJSONString(JSON.java:3086)
at com.test.FastJsonDome.test(FastJsonDome.java:28)
at java.base/java.lang.reflect.Method.invoke(Method.java:580)
at java.base/java.util.ArrayList.forEach(ArrayList.java:1596)
at java.base/java.util.ArrayList.forEach(ArrayList.java:1596)

附加信息

如果你还有其他需要提供的信息,可以在这里填写(可以提供截图、视频等)。

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workingfixed

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions