fastjson2 icon indicating copy to clipboard operation
fastjson2 copied to clipboard

2.0.54直接在JDK环境中运行正常,但是使用 native-maven-plugin 打成 native-image时 反序列化 报错,回退到2.0.53正常

Open wushujia789 opened this issue 11 months ago • 4 comments

问题描述

直接在JDK环境中运行正常,但是使用 native-maven-plugin 打成 native-image时 反序列化 会出现如下两种错误: 使用 native-maven-plugin 打成 native-image时 反序列化 bean对象报错: com.alibaba.fastjson2.JSONException: illegal fieldName input 52, offset 8, character 4, line 1, column 8, fastjson-version 2.0.54 {"e":864000000,"m":1736742368812,"o":"2025-01-13 12:26:08.812~true~restart"} at com.alibaba.fastjson2.JSONReaderASCII.readFieldNameHashCode(JSONReaderASCII.java:141) at com.alibaba.fastjson2.reader.ObjectReader3.readObject(ObjectReader3.java:286) at com.alibaba.fastjson2.JSON.parseObject(JSON.java:1171) at com.kevin.test1.Test1Application.test2(Test1Application.java:56) at com.kevin.test1.Test1Application.main(Test1Application.java:24) at [email protected]/java.lang.invoke.LambdaForm$DMH/sa346b79c.invokeStaticInit(LambdaForm$DMH)

反序列化Long类型也报错: com.alibaba.fastjson2.JSONException: input not end, offset 11, character 9, line 1, column 11, fastjson-version 2.0.54 21972981729871998 at com.alibaba.fastjson2.JSON.parseObject(JSON.java:869) at com.kevin.test1.Test1Application.test4(Test1Application.java:66) at com.kevin.test1.Test1Application.main(Test1Application.java:34) at [email protected]/java.lang.invoke.LambdaForm$DMH/sa346b79c.invokeStaticInit(LambdaForm$DMH)

回退到Fastjson2 2.0.53 后可以正常反序列化。 test1.zip

环境信息

  • OS信息: [e.g.:windows or linux]
  • JDK信息: [e.g.:graal native 21]
  • 版本信息:[e.g.:Fastjson2 2.0.54]

重现步骤

cd ~/work/workspace/testproject/test1 mvn clean package -Pnative native:compile-no-fork -DskipTests -X ~/work/workspace/testproject/test1/target/test1

期待的正确结果

能正常反序列化

wushujia789 avatar Jan 13 '25 09:01 wushujia789

test1.zip 最小重现环境

wushujia789 avatar Jan 13 '25 09:01 wushujia789

最新版本修正了么

wushujia789 avatar Mar 21 '25 08:03 wushujia789

请帮验证下2.0.56是不是OK得

wenshao avatar Mar 21 '25 08:03 wenshao

更新成2.0.56后 在打包成native 下运行没有该错误了,但是出现了更为严重的错误,序列化后居然会改变我的bean key名称,和value值,发现 name和value值都是被截取了前面一些值,但是不是所有的都会被截取,由于value值有点敏感我就不一一贴出来了,有些value值直接被清空了变成空字符串了,有些value值把我原有的字符串打乱了。名称错误比如: "RSAprivateExponent":"XXX" 改为 "teExponeteExponent":"XXX" "baseSysUserInfo.topic": "" 改为 "serInfo.serInfo.topic": "" "baseSysUserInfo.encrypt.type":“” 改为 "serInfo.encrypt.encrypt.type":"" "mobilephoneEncryptionType": 改为 "oneEncryptionTypptionType":"" "emailEncryptionKey":"" 改为 "ryptionKryptionKey":""
这个bug确实比较严重了

@wenshao

wushujia789 avatar Mar 21 '25 10:03 wushujia789

哪个版本正常?最新的2.0.57还是这样

bored-boys avatar Jun 26 '25 10:06 bored-boys

使用旧版本或者等后续新版本或者换个json框架。

wushujia789 avatar Jul 10 '25 18:07 wushujia789

正在修复graal-native image相关的问题,但现在sonarype升级,发不了新版本

wenshao avatar Jul 10 '25 21:07 wenshao

https://github.com/alibaba/fastjson2/releases/tag/2.0.58 问题已修复,请用新版本

wenshao avatar Jul 30 '25 05:07 wenshao