json转义问题(消除反斜杠及{}外面多余的“)

  • 使用fastjson的Json.toJsonString()方法时出现多余反斜杠

    {"data":"{\"models\":[{\"name\":\"test\",\"id\":1}],\"table\":\"ws\"}","option":"add"}
    
  • 使用 StringEscapeUtils.unescapeJavaScript(jsDataStr) 解决!!!

    import org.apache.commons.lang.StringEscapeUtils;
    
    String jsonStr = StringEscapeUtils.unescapeJavaScript(str);
    

    结果如下:

    {"data":"{"models":[{"name":"test","id":1}],"table":"ws"}","option":"add"}
    
  • 补充:消除{}两边多余的“

    问题描述:map等包含String字符串值的数据结构在转成json时,如果String串原本是两边带有{}的,有时会出现大括号两边有额外的"",这样在json转化的时候会报格式转化错误,需要把{}两边多余的""先去掉在转化,因此写一个简单的工具类如下来实现:

      import org.apache.commons.lang.StringEscapeUtils;
      /**
       * @Author: fenghao
       * @Description: string和json之间转化用到的工具类
       * @Date: 2020/7/15 9:33
       **/
      public class StringJsonUtils {
          /**
           * 工具类,提供私有构造
           */
          private StringJsonUtils() {
      
          }
          /**
           * @description: 把原生的带有json内容的字符串去掉多余的转移符号,并把有可能多余
           * 的{}两边的""去掉
           * @author: fenghao
           * @date: 2020/7/15 10:49 
           * @param json 原生的带有json内容的字符串
           * @return: java.lang.String
           */
          public static String getFormatJsonString(String json) {
              //先去除多余的转义符号
              json = StringEscapeUtils.unescapeJavaScript(json);
              //map等其他类型把String类型的值转成json的容易在{}外面有引号,会导致转换出错
              //去掉{}两边的引号{}需要\\进行转义,"需要\进行转义
              json=json.replaceAll("\"\\{", "\\{");
              json=json.replaceAll("\\}\"", "\\}");
              return json;
          }
      }
      
      
    
### 去除 JSON 字符串中的反斜杠 在 Python 中,JSON 数据通常会包含一些转义字符(如 `\`),这些字符是为了确保字符串的合法性而存在的。如果希望去除 JSON 字符串中的多余反斜杠,可以按照以下方式操作。 #### 使用 `json.loads()` 和 `json.dumps()` 当从 JSON 换到 Python 对象时,可以通过 `json.loads()` 解析原始 JSON 字符串并将其换为字典或其他结构化的数据形式[^1]。随后再次调用 `json.dumps()` 方法将该对象重新序列化为 JSON 字符串,在此过程中多余反斜杠会被自动移除: ```python import json # 示例 JSON 字符串带有额外的反斜杠 original_json_string = '{"key": "value with \\"escaped\\" quotes"}' # 将 JSON 字符串加载为 Python 字典 python_object = json.loads(original_json_string) # 再次将 Python 字典换为 JSON 字符串 clean_json_string = json.dumps(python_object) print(clean_json_string) # 输出不带多余反斜杠JSON 字符串 ``` 通过上述方法,可以有效减少因多次序列化而导致的冗余反斜杠问题。 #### 替代方案:使用字符串替换功能 对于某些特殊情况下的 JSON 字符串,可能需要手动删除特定的转义字符。此时可利用 Python 的内置字符串方法 `.replace()` 来实现这一目标[^4]: ```python # 示例 JSON 字符串 json_with_slashes = '{"key": "value\\\\with\\\\extra\\\\slashes"}' # 移除所有的反斜杠 cleaned_string = json_with_slashes.replace("\\", "") print(cleaned_string) # 输出清理后的 JSON 字符串 ``` 需要注意的是,这种方法仅适用于简单的场景,并且可能会破坏原本有效的转义逻辑,因此应谨慎使用。 --- #### 结合实际需求选择合适的方法 无论是采用标准库函数还是自定义处理手段,都需依据具体的应用环境决定最佳策略。例如,若涉及复杂的嵌套结构或者动态生成的数据,则推荐优先考虑基于 `json` 模块的操作流程;而对于静态文本修正任务来说,直接运用字符串替代技术或许更为便捷高效[^3]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值