Skip to content

[BUG] 反序列化对于字符串[]逻辑不一致 #4033

@Jick-study

Description

@Jick-study

问题描述

对于字符串里本身就是有[],如果里面就1份数据,转回来会丢失[]。如果里面多份数据,则会保留[]

环境信息

  • JDK信息: OpenJdk21
  • 版本信息:2.0.61

重现步骤

如何操作可以重现该问题:

    @Getter
    @Setter
    class TestString {
        String apiAuth;
    }

    public static void main(String[] args) {
        String text1 = "{\"apiAuth\":[\"权限1\",\"权限2\"]}";
        TestString testString = JSON.parseObject(text1, TestString.class);
        System.out.println(JSON.toJSONString(testString));

        String text2 = "{\"apiAuth\":[\"权限1\"]}";
        TestString testString2 = JSON.parseObject(text2, TestString.class);
        System.out.println(JSON.toJSONString(testString2));

        String text3 = "{\"apiAuth\":[\"权限1\"]}";
        String s3 = JSON.parseObject(text3, String.class);
        System.out.println(s3);
    }

期待的正确结果

即使[]里一份数据,反序列化回来的时候继续保持

相关日志输出

如果不是反序列化对象则会保留,请看s3的输出,上面三个输出如下:
{"apiAuth":"["权限1","权限2"]"}
{"apiAuth":"权限1"} // 这个不对,自动给我丢了[]
{"apiAuth":["权限1"]}

附加信息

如果你还有其他需要提供的信息,可以在这里填写(可以提供截图、视频等)。

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions