json包含單雙引號問題解決方案

解決方案:在後臺處理 JSONArray.fromObject(list).toString()javascript

轉自明明如月小角落html

效果DEMO:java

 

 

 

 

JsonQuotesUtil.jsjquery

 

[javascript]  view plain  copy
 
 在CODE上查看代碼片派生到個人代碼片
  1. /** 
  2.  * 解決json傳輸數據時存在 同時存在單引號和雙引號的問題 
  3.  * 
  4.  * 思路: 
  5.  * 
  6.  * 1 首選將 雙引號轉義 
  7.  * 
  8.  * 2 將 單雙引號用不容易在字符串中出現的字符分別替換 
  9.  *   在後臺 分別用過單雙引號替換掉便可 
  10.  * 
  11.  * 注:能夠傳入字符串 也能夠傳入字符串數組 
  12.  * author: 明明如月 QQ 605283073 
  13.  * time:2015年5月19日15:33:44 
  14.  */  
  15.   
  16.  function JsonQuotesUtil()  
  17.  {  
  18.   
  19.      var defualtSingleQuotePlaceholder="s%0";//默認單引號佔位符  
  20.      var defualtDoubleQuotePlaceholder="d%1";//默認雙引號佔位符  
  21.   
  22.      var singleQuotePlaceholder=defualtSingleQuotePlaceholder;//單引號佔位符  
  23.      var doubleQuotePlaceholder=defualtDoubleQuotePlaceholder;//雙引號佔位符  
  24.        
  25.     //設置單引號佔位符(建議起不容易出現的字符)  
  26.      this.setSingleQuotePlaceholder = function(single)  
  27.      {  
  28.          singleQuotePlaceholder=single;  
  29.          return this;  
  30.      }  
  31.        
  32.     //設置雙引號佔位符(建議起不容易出現的字符)  
  33.      this.setDoubleQuotePlaceholder = function(double)  
  34.      {  
  35.          doubleQuotePlaceholder=double;  
  36.   
  37.          return this;  
  38.      }  
  39.        
  40.     //恢復默認單引號和雙引號佔位符  
  41.      this.restoreDefaults = function()  
  42.      {  
  43.          singleQuotePlaceholder=defualtSingleQuotePlaceholder;  
  44.          doubleQuotePlaceholder=defualtDoubleQuotePlaceholder;  
  45.         return this;  
  46.      }  
  47.        
  48.     //用單引號佔位符替換單引號 並返回替換後的字符串  
  49.      this.replaceSingleQuote=function (str)  
  50.      {  
  51.   
  52.          if(str instanceof  Array)//若是是數組分別替換  
  53.          {  
  54.              for(var i=0;i<str.length;i++)  
  55.              {  
  56.                 str[i]= str[i].replace(/'/g, singleQuotePlaceholder);  
  57.   
  58.              }  
  59.          }else  
  60.          {  
  61.              str= str[i].replace(/'/g, singleQuotePlaceholder);  
  62.          }  
  63.           return str;  
  64.      }  
  65.        
  66.      //用雙引號替換符替換雙引號 並返回替換後的字符串  
  67.      this.replaceDoubleQuote = function (str)  
  68.      {  
  69.         // return str.replace(/"/g, doubleQuotePlaceholder);  
  70.   
  71.          if(str instanceof  Array)//若是是數組分別替換  
  72.          {  
  73.              for(var i=0;i<str.length;i++)  
  74.              {  
  75.                  str[i]= str[i].replace(/'/g, doubleQuotePlaceholder);  
  76.   
  77.              }  
  78.          }else  
  79.          {  
  80.              str= str[i].replace(/'/g, doubleQuotePlaceholder);  
  81.          }  
  82.          return str;  
  83.   
  84.      }  
  85.   
  86.   
  87.   
  88.   
  89.      this.replaceSingleAndDoubleQuote = function(str)  
  90.      {  
  91.         // return str.replace(/'/g,singleQuotePlaceholder).replace(/"/g, doubleQuotePlaceholder);  
  92.          if(str instanceof  Array)//若是是數組分別替換  
  93.          {  
  94.              alert("1");  
  95.              for(var i=0;i<str.length;i++)  
  96.              {  
  97.                  alert(str[i]);  
  98.                  str[i]= str[i].replace(/'/g,singleQuotePlaceholder).replace(/"/g, doubleQuotePlaceholder);  
  99.   
  100.              }  
  101.          }else  
  102.          {  
  103.              str= str.replace(/'/g,singleQuotePlaceholder).replace(/"/g, doubleQuotePlaceholder);  
  104.          }  
  105.          return str;  
  106.      }  
  107.   
  108.   
  109.      //雙引號轉義  
  110.      this.escapeDoubleQuote = function(str)  
  111.      {  
  112.   
  113.   
  114.          if(str instanceof  Array)//若是是數組分別替換  
  115.          {  
  116.              alert("1");  
  117.              for(var i=0;i<str.length;i++)  
  118.              {  
  119.                  alert(str[i]);  
  120.                  str[i]= str[i].replace(/"/g,"\\\"");  
  121.   
  122.              }  
  123.          }else  
  124.          {  
  125.              str= str.replace(/"/g,"\\\"");;  
  126.          }  
  127.          return str;  
  128.      }  
  129.  }  
  130.    



 

 

 demo.js 使用範例:json

 

[javascript]  view plain  copy
 
 在CODE上查看代碼片派生到個人代碼片
  1. /** 
  2.  * Created by Administrator on 2015/5/19 0019. 
  3.  */  
  4. $(function(){  
  5.   
  6.     //替換單雙引號按鈕的點擊事件  
  7.     $("#show").click(function(){  
  8.   
  9.         var sourceStr =$("#sourceStr").val();//獲取須要替換字符  
  10.   
  11.         /* 使用方法1 建立對象並自定義 單雙引號佔位符 
  12.            var jsonQuotesUtil = new JsonQuotesUtil().setSingleQuotePlaceholder 
  13.  
  14. ("%^^").setDoubleQuotePlaceholder("&&");//建立對象(同時自定義單雙引佔位符)*/  
  15.   
  16.         /* 使用方法2 自定義對象並自定義 單雙引號佔位符 
  17.            var jsonQuotesUtil = new JsonQuotesUtil();//建立對象使用默認單雙引號佔位符 
  18.           jsonQuotesUtil.setSingleQuotePlaceholder("%^^"); 
  19.           jsonQuotesUtil.setDoubleQuotePlaceholder("##");*/  
  20.   
  21.   
  22.          // jsonQuotesUtil.restoreDefaults();//恢復默認的單雙引號佔位符  
  23.   
  24.   
  25.         /* 使用方法3 自定義對象並自定義 單雙引號佔位符 
  26.          var jsonQuotesUtil = new JsonQuotesUtil();//建立對象使用默認單雙引號佔位符 
  27.           */  
  28.   
  29.   
  30.   
  31.   
  32.         var jsonQuotesUtil = new JsonQuotesUtil();//建立對象使用默認單雙引號佔位符  
  33.   
  34.         var single =$("#single").val();//獲取 單引號佔位符  
  35.         var double = $("#double").val();//獲取輸入的雙引號佔位符  
  36.   
  37.         if($.trim(single)!="")  
  38.         {  
  39.             jsonQuotesUtil.setSingleQuotePlaceholder(single);//設置單引號佔位符  
  40.         }  
  41.   
  42.         if($.trim(double)!="")  
  43.         {  
  44.             jsonQuotesUtil.setDoubleQuotePlaceholder(double);//設置雙引號佔位符  
  45.         }  
  46.   
  47.   
  48.         var reuslt = jsonQuotesUtil.replaceSingleAndDoubleQuote(sourceStr);//同時替換單雙引  
  49.   
  50. 號  
  51.   
  52.   
  53.        // var reuslt = jsonQuotesUtil.escapeDoubleQuote(sourceStr)  
  54.          $("#replaceResult").html(reuslt);//顯示替換後的字符串  
  55.   
  56.   
  57.   
  58.     });  
  59.   
  60.   
  61.   
  62.     $("#escape").click(function(){  
  63.   
  64.         var sourceStr =$("#sourceStr").val();//獲取須要替換字符  
  65.   
  66.         var reuslt =  new JsonQuotesUtil().escapeDoubleQuote(sourceStr);  
  67.         $("#replaceResult").html(reuslt);//顯示替換後的字符串  
  68.   
  69.     });  
  70.   
  71.     function arrayTest()//支持數組每一個字符串的替換(沒有調用)  
  72.     {  
  73.         var jsonQuotesUtil = new JsonQuotesUtil();//建立對象使用默認單雙引號佔位符  
  74.   
  75.         var sourceStr = new Array();  
  76.         sourceStr[0]="dfdfd'dfdf";  
  77.         sourceStr[1]="dfdfd\"sfdsfsd";  
  78.         alert("sourceStr"+sourceStr);  
  79.   
  80.         var reuslt = jsonQuotesUtil.replaceSingleAndDoubleQuote(sourceStr);//同時替換單雙引  
  81.   
  82. 號  
  83.         alert( "after:"+reuslt);  
  84.     }  
  85. });  

 

JsonQuotesUtil Demo.html數組

 

[html]  view plain  copy
 
 在CODE上查看代碼片派生到個人代碼片
  1. <!DOCTYPE html>  
  2. <html>  
  3. <head lang="en">  
  4.     <meta charset="UTF-8">  
  5.     <title>JsonQuotesUtil Demo</title>  
  6.     <script type="text/javascript" src="libs/js/jquery.js"></script>  
  7.     <script type="text/javascript" src="libs/js/JsonQuotesUtil.js"></script>  
  8.     <script type="text/javascript" src="libs/js/demo.js"></script>  
  9. </head>  
  10.   
  11.     請輸入帶有單雙引號的字符串:<br/>  
  12.           <textarea rows="10" cols="65" id="sourceStr">This is a simple solution for SingleQuote( ') and DoubleQuote(") in json </textarea>  
  13.   
  14. <br/><br/>  
  15.      單引號佔位符:<input id="single" type="text" placeholder="s%0"/> &nbsp; 雙引號佔位符:<input id="double" type="text" placeholder="d%1"/>  
  16.   
  17. <br/> <br/>  
  18.           <input type="button" id="show" value="替換單雙引號">&nbsp;<input type="button" id="escape" value="轉義雙引號">  
  19.          <br/>  
  20.         <span id="replaceResult"></span>  
  21.   
  22.   
  23.   
  24. </form>  
  25.   
  26. </body>  
  27. </html>  

 

 

後臺解析Util:this

 

 

[java]  view plain  copy
 
 在CODE上查看代碼片派生到個人代碼片
  1. package reg;  
  2. /** 
  3.  * 解決json傳輸數據時存在 同時存在單引號和雙引號的問題 
  4.  * 
  5.  * 思路: 
  6.  * 將 單雙引號用不容易在字符串中出現的字符分別替換 
  7.  * 在後臺 分別用過單雙引號替換掉便可 
  8.  * 注:能夠傳入字符串 也能夠傳入字符串數組 
  9.  * 
  10.  * author: 明明如月 QQ 605283073 
  11.  * time:2015年5月19日15:33:44 
  12.  */  
  13. public class JsonQuotesUtil   
  14. {  
  15.     private  String defualtSingleQuotePlaceholder="s%0";//默認單引號佔位符  
  16.     private   String defualtDoubleQuotePlaceholder="d%1";//默認雙引號佔位符  
  17.       
  18.     public JsonQuotesUtil()   
  19.     {  
  20.         super();  
  21.           
  22.     }  
  23.       
  24.     public JsonQuotesUtil(String defualtSingleQuotePlaceholder,  
  25.             String defualtDoubleQuotePlaceholder)   
  26.     {  
  27.         super();  
  28.         this.defualtSingleQuotePlaceholder = defualtSingleQuotePlaceholder;  
  29.         this.defualtDoubleQuotePlaceholder = defualtDoubleQuotePlaceholder;  
  30.     }  
  31.   
  32.     //恢復單引號(字符串)  
  33.     public    String restoreSingleQuotes(String str)  
  34.     {  
  35.         return str.replaceAll(defualtSingleQuotePlaceholder, "\'");  
  36.     }  
  37.       
  38.     public  String[]  restoreSingleQuotes(String[] strs)//恢復單引號(數組)  
  39.     {  
  40.         for(int i =0;i<strs.length;i++)  
  41.         {  
  42.             strs[i]= strs[i].replaceAll(defualtSingleQuotePlaceholder, "\'");  
  43.         }  
  44.          return strs;  
  45.     }  
  46.       
  47.     //恢復雙引號  
  48.     public   String restoreDoubleQuote(String str)//恢復單引號(數組)  
  49.     {  
  50.         return str.replaceAll(defualtDoubleQuotePlaceholder, "\"");  
  51.     }  
  52.     public   String[] restoreDoubleQuote(String[] strs)  
  53.     {  
  54.         for(int i =0;i<strs.length;i++)  
  55.         {  
  56.             strs[i]= strs[i].replaceAll(defualtSingleQuotePlaceholder, "\'");  
  57.         }  
  58.          return strs;  
  59.           
  60.     }  
  61.       
  62.       
  63.     //恢復單雙引號  
  64.     public   String restoreSingleAndDoubleQuote(String str)  
  65.     {  
  66.         return str.replaceAll(defualtSingleQuotePlaceholder, "\'").replaceAll(defualtDoubleQuotePlaceholder, "\"");  
  67.     }  
  68.     public   String[] restoreSingleAndDoubleQuote(String[] strs)//恢復單雙引號(數組)  
  69.     {  
  70.         for(int i =0;i<strs.length;i++)  
  71.         {  
  72.             strs[i]= strs[i].replaceAll(defualtSingleQuotePlaceholder, "\'").replaceAll(defualtDoubleQuotePlaceholder, "\"");  
  73.         }  
  74.          return strs;  
  75.       
  76.     }  
  77.   
  78.     public String getDefualtSingleQuotePlaceholder()   
  79.     {  
  80.         return defualtSingleQuotePlaceholder;  
  81.     }  
  82.   
  83.     public void setDefualtSingleQuotePlaceholder(String defualtSingleQuotePlaceholder)  
  84.     {  
  85.         this.defualtSingleQuotePlaceholder = defualtSingleQuotePlaceholder;  
  86.     }  
  87.   
  88.     public String getDefualtDoubleQuotePlaceholder()  
  89.     {  
  90.         return defualtDoubleQuotePlaceholder;  
  91.     }  
  92.   
  93.     public void setDefualtDoubleQuotePlaceholder(String defualtDoubleQuotePlaceholder)  
  94.     {  
  95.         this.defualtDoubleQuotePlaceholder = defualtDoubleQuotePlaceholder;  
  96.     }  
  97.       
  98.       
  99.   
  100. }  


Util使用方法:spa

 

 

 

[java]  view plain  copy
 
 在CODE上查看代碼片派生到個人代碼片
    1. package reg;  
    2.   
    3. public class JsonQuotesUtilDemo   
    4. {  
    5.   
    6.       
    7.       
    8.     public static void main(String args[])  
    9.     {  
    10.         //獲取前臺傳入的參數  
    11.         String str="This is a simple solution for SingleQuote(s%0) and DoubleQuote(d%1) in json This is a simple solution for SingleQuote(s%0) and DoubleQuote(d%1) in json";  
    12.           
    13.         JsonQuotesUtil jsonQuotesUtil = new JsonQuotesUtil("s%0","d%1");  
    14.         System.out.println(jsonQuotesUtil.restoreSingleAndDoubleQuote(str));  
    15.     }  
    16.       
    17.   
    18. }  
相關文章
相關標籤/搜索