fastjson2
fastjson2 copied to clipboard
[BUG]AutoType long类型解析成Integer
问题描述
简要描述您碰到的问题。 AutoType long类型解析成Integer,请看代码
环境信息
请填写以下信息:
- OS信息: [e.g.:windows ]
- JDK信息: [e.g.:Openjdk 1.8.0_221]
- 版本信息:[e.g.:Fastjson2 2.0.49]
重现步骤
如何操作可以重现该问题: 执行代码
@Test
public void testLong() {
String str = "[300000000L]";
List list = JSONObject.parseObject(str, List.class, Feature.SupportAutoType);
System.out.println(list.get(0).getClass());//print class java.lang.Integer
Assert.assertTrue(list.get(0).getClass() == Long.class);
}
期待的正确结果
正确解析成long类型
相关日志输出
print class java.lang.Integer java.lang.AssertionError
附加信息
建议修改的地方:com.alibaba.fastjson2.JSONReaderUTF16 的4038行
if (ch == 'L' || ch == 'F' || ch == 'D' || ch == 'B' || ch == 'S') {
if (!intOverflow) {//这里改成 if (!intOverflow||ch == 'L' ) ,long类型不存在溢出的问题
switch (ch) {
case 'B':
valueType = JSON_TYPE_INT8;
break;
case 'S':