V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
BernardMe
V2EX  ›  程序员

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

  •  
  •   BernardMe · 2018-10-30 08:54:36 +08:00 · 3174 次点击
    这是一个创建于 2209 天前的主题,其中的信息可能已经有所发展或是发生改变。
    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 这个代码无效

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

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

    其他方式参考 fastjson issue
    BernardMe
        6
    BernardMe  
    OP
       2018-10-30 10:12:22 +08:00
    @zhaogaz 你是说这个方法 public String replaceAll(String regex, String replacement) 手动截取替换?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2828 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 09:38 · PVG 17:38 · LAX 01:38 · JFK 04:38
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.