求帮助 Java 对象序列化问题 JSONObject.toJSONString(M, SerializerFeature.DisableCheckSpecialChar) 其中 DisableCheckSpecialChar 属性无效

2018-10-30 08:54:36 +08:00
 BernardMe
FastJson 包: 原始对象:M 里面数据类似

face_data 字段值: ["AwMBAAABAAAKFDWQmQUdGj...xUS7GnoKZ5vidnh4nBXUynG/dkZHiyC578BGWWcy+WAVMaL3WxJ/Xk1fqejpgz7DpgNMmGkh\nvUOjtqwe\n"]"

String json = JSON.toJSONString(M, SerializerFeature.DisableCheckSpecialChar);

但是转换后,[后面的那个双引号"还是被多加上了转义反斜线\;

"face_data":"[\"AwMBAAABAAAKFDWQmQUdGj...xUS7GnoKZ5vidnh4nBXUynG/dkZHiyC578BGWWcy+WAVMaL3WxJ/Xk1fqejpgz7DpgNMmGkh\nvUOjtqwe\n\"]"

SerializerFeature.DisableCheckSpecialChar 这个代码无效

==========================
请大侠帮忙
3093 次点击
所在节点    程序员
6 条回复
lhx2008
2018-10-30 08:58:31 +08:00
JSON 标准了解一下,前开后闭,加反斜杠解析的时候才正常,又不是人复制粘贴
lhx2008
2018-10-30 08:59:19 +08:00
你写代码也不能这么写吧 String s = "akam"aa"";
BernardMe
2018-10-30 09:04:55 +08:00
@lhx2008 这个用 JSON.toJSONString()将对象序列化为字符串,默认是将特殊字符"转义的,我是说能配置,让它忽略特殊字符"吗
lhx2008
2018-10-30 09:19:59 +08:00
@BernardMe 这个特性不知道源代码里面有没有写文档说是什么意思,如果你确实要保留双引号,可以要求 FASTJSON 用单引号在外面。
zhaogaz
2018-10-30 10:08:43 +08:00
查了下 fastjson 文档,DisableCheckSpecialChar 已经被 Deprecated 了

你的需求简单,建议手动处理下。

其他方式参考 fastjson issue
BernardMe
2018-10-30 10:12:22 +08:00
@zhaogaz 你是说这个方法 public String replaceAll(String regex, String replacement) 手动截取替换?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/502396

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX