2.0.54直接在JDK环境中运行正常,但是使用 native-maven-plugin 打成 native-image时 反序列化 报错,回退到2.0.53正常
问题描述
直接在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
期待的正确结果
能正常反序列化
test1.zip 最小重现环境
最新版本修正了么
请帮验证下2.0.56是不是OK得
更新成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
哪个版本正常?最新的2.0.57还是这样
使用旧版本或者等后续新版本或者换个json框架。
正在修复graal-native image相关的问题,但现在sonarype升级,发不了新版本
https://github.com/alibaba/fastjson2/releases/tag/2.0.58 问题已修复,请用新版本