fastjson2 icon indicating copy to clipboard operation
fastjson2 copied to clipboard

[BUG] Inconsistency in Serialization with JSON.toJSONBytes

Open Cooperzzy opened this issue 1 year ago • 1 comments

问题描述

类似 #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]

Cooperzzy avatar May 08 '24 09:05 Cooperzzy

这个testcase构造得不对,JSON.toJSONBytes的作用类似于JSON.toJSONString().getBytes(StandardCharsets.UTF8)

wenshao avatar May 12 '24 23:05 wenshao