[alibaba/fastjson]fastjson 1.2.28升级至1.2.58, byte数组序列化兼容性问题

2024-08-30 43 views
4

fastjson 版本从1.2.28升级至1.2.58之后,发现在序列化对象中包含byte[]时,1.2.58不能兼容老版本,使用场景是java和c++跨语言的消息传递,请问有没有什么好的办法可以解决这个问题?

序列化的API调用: JSON.toJSONString(object, SerializerFeature.WriteClassName, SerializerFeature.DisableCircularReferenceDetect, SerializerFeature.WriteMapNullValue, SerializerFeature.WriteNullListAsEmpty).getBytes("UTF-8");

反序列化的API调用: JSON.parseObject(new String(bytes,"UTF-8"),clazz);

这是1.2.58版本序列化的结果: {"attribute":"timestamp:201907161733","data":x'746573745F6173796E6320202020746573745F73656E64206D657373616765',"end":false,"flag":0,"id":0} 这是1.2.28版本序列化的结果 {"attribute":"timestamp:201907171246","data":"dGVzdF9hc3luYyAgICB0ZXN0X3NlbmQgbWVzc2FnZQ==","end":false,"flag":0,"id":2}

1.2.58版本序列化结果中,data部分是 x'74开头,应该是做了16进制的转换。

有什么方式可以解决或者屏蔽这个问题吗?

回答

8

@wenshao

3

可以先用1.1.29.sec04,后续我再发版本解决兼容问题

2

升级的原因是为了屏蔽fastjson的安全漏洞,1.1.29.sec04 这个版本是不是也存在安全漏洞?

0

所有的sec04版本都是安全的