fastjson2
fastjson2 copied to clipboard
[BUG]将Map<Integer,String>对象序列化时没有生成正确的Json字符串
问题描述
在将Map<Integer,String>对象序列化时没有生成正确的Json字符串,生成的字符串中,键是不带引号的,这不符合JSON字符串的标准
环境信息
请填写以下信息:
- OS信息: [e.g.:Windows11]
- JDK信息: [e.g.:Openjdk 23.0.1]
- 版本信息:[e.g.:Fastjson2 2.0.56]
重现步骤
如何操作可以重现该问题:
map.put(1, "管理员"); map.put(2, "普通用户");- 使用
JSON.toJSONString(map)方法 - 输出字符串为
{1:"管理员",2:"普通用户"}不符合JSON字符串格式
Map<Integer, String> map = new HashMap<>();
map.put(1, "管理员");
map.put(2, "普通用户");
String json = JSON.toJSONString(map);
System.out.println(json); // 输出 {1:"管理员",2:"普通用户"}(键无引号)
期待的正确结果
正确结果应该生成符合JSON字符串格式 如:{"1":"管理员","2":"普通用户"}
相关日志输出
请复制并粘贴任何相关的日志输出。
附加信息
我在其他issue中看见了和你相似的错误3212 你可以试试这个 JSON.toJSONString(map, JSONWriter.Feature.WriteNonStringKeyAsString);
我以为是fastjson2升级出来的新bug呢, 然后在fastjson1的1.2.83版本下, 也测试了一下, 竟然也是一样的结果。 也是数字key,不带引号的。