欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2022-03-26 21:22:31
使用fastjson的Json.toJsonString()方法时出现多余反斜杠{"data":"{\"models\":[{\"name\":\"test\",\"id\":1}],\"table\":\"ws\"}","option":"add"}使用 StringEscapeUtils.unescapeJavaScript(jsDataStr) 解决!!!import org.apache.commons.lang.StringEscapeUtils;String jsonStr.....
  • 使用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;
          }
      }
      
      
    

本文地址:https://blog.csdn.net/spec_king/article/details/107340619