fastjson2
fastjson2 copied to clipboard
[BUG] Inconsistency in Serialization with JSON.toJSONBytes
问题描述
类似 #2543,fastjson和fastjson2在JSON.toJSONBytes后进行序列化的结果不一致,而且均不符合正常预期。
环境信息
- OS信息: [MacOS 12.7.4 M1 Pro 16 GB]
- JDK信息: [Openjdk 17.0.6]
- 版本信息:[Fastjson2-2.0.49]
重现步骤
import com.alibaba.fastjson2.JSON;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.assertEquals;
public class Issue2128Mutated_25 {
@Test
public void test() {
String str = "{\"amt\":22.12}";
System.out.println(com.alibaba.fastjson.JSON.toJSONString(com.alibaba.fastjson.JSON.parseObject(str)));
assertEquals(com.alibaba.fastjson.JSON.toJSONString(com.alibaba.fastjson.JSON.parseObject(str)), JSON.toJSONString(JSON.parseObject(str)));
assertEquals(com.alibaba.fastjson.JSON.toJSONString(com.alibaba.fastjson.JSON.toJSONBytes(str)), JSON.toJSONString(JSON.toJSONBytes(str)));
}
}
期待的正确结果
toJSONBytes后序列化行为应一致,且结果正确
相关日志输出
{"amt":22.12}
org.opentest4j.AssertionFailedError: Expected :"IntcImFtdFwiOjIyLjEyfSI=" Actual :[34,123,92,34,97,109,116,92,34,58,50,50,46,49,50,125,34]
这个testcase构造得不对,JSON.toJSONBytes的作用类似于JSON.toJSONString().getBytes(StandardCharsets.UTF8)