我有一个String
,然后将其转换为JSON对象:
public static final String JSON_STRING = "json string";
JSONObject jsonObject = new JSONObject(JSON_STRING);
但有时当String
太长时,我会收到错误:
字符串*的UTF8表示对于常量池来说太长了
还有其他方法可以获得如此长的字符串吗?
答案 0 :(得分:2)
字符串以class file格式存储在UTF-8中,限制为65535字节。 在运行时构造的字符串可以是much longer
因此,您应该在多个字符串常量上拆分字符串常量,并在使用前连接它们或从文本文件中读取值。
答案 1 :(得分:1)
据我所知,JVM(特别是类文件格式)的限制为65535个字符。
来自Oracle docs:
字段和方法名称,字段和方法描述符的长度, 和其他常量字符串值(包括那些引用的值) ConstantValue(§4.7.2)属性限制为65535个字符 CONSTANT_Utf8_info结构的16位无符号长度项 (§4.4.7)。