fastjson 反序列化转义问题

shyt4zoc  于 2021-11-27  发布在  Java
关注(0)|答案(5)|浏览(1010)
JSONObject jsonObject = JSONObject.parseObject("{\"aaa\":\"\001\"}");
 System.out.println(jsonObject);

为什么输出结果是: {"aaa":"\u0001"}

JSONObject jsonObject = JSONObject.parseObject("{\"aaa\":\"\\001\"}");
 System.out.println(jsonObject);

为什么输出结果是:{"aaa":"\u000001"}

怎么给加上了\u0这样的字符串呢?

dbf7pr2w

dbf7pr2w1#

\ 在json 中是特殊字符需要转义的, 不是 fastjson 的问题

35g0bw71

35g0bw712#

怎么不让它给我转义
JSONObject jsonObject = JSONObject.parseObject("{"aaa":"\001"}");
System.out.println(jsonObject);
我想要的输出结果是:{"aaa":"\001"},而不是{"aaa":"\u0001"}

vof42yt1

vof42yt13#

@545314690 你可以反其道而行之,先构建一个对象,然后序列化,看看生成的字符串是什么样的.

zy1mlcev

zy1mlcev4#

在双引号内部,\ 是转义字符,单独一个\符号被双引号括起来后应该是"\\",因此你期望的 \001 字符串,被双引号括起来后应该是"\\001"。你需要传入的JSON字符串应该是:"{\"aaa\":\"\\\\001\"}"

String str = "{\"aaa\":\"\\\\001\"}";
    JSONObject jsonObject = JSONObject.parseObject(str);
    System.out.println(jsonObject);  //{"aaa":"\\001"}

    Map map = JSONObject.parseObject( str, Map.class );
    System.out.println(map);  // {aaa=\001}

相关问题