解决方案:在后台处理 JSONArray.fromObject(list).toString()

转自明明如月小角落

效果DEMO:

JsonQuotesUtil.js

  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. function JsonQuotesUtil()
  16. {
  17. var defualtSingleQuotePlaceholder="s%0";//默认单引号占位符
  18. var defualtDoubleQuotePlaceholder="d%1";//默认双引号占位符
  19. var singleQuotePlaceholder=defualtSingleQuotePlaceholder;//单引号占位符
  20. var doubleQuotePlaceholder=defualtDoubleQuotePlaceholder;//双引号占位符
  21. //设置单引号占位符(建议起不容易出现的字符)
  22. this.setSingleQuotePlaceholder = function(single)
  23. {
  24. singleQuotePlaceholder=single;
  25. return this;
  26. }
  27. //设置双引号占位符(建议起不容易出现的字符)
  28. this.setDoubleQuotePlaceholder = function(double)
  29. {
  30. doubleQuotePlaceholder=double;
  31. return this;
  32. }
  33. //恢复默认单引号和双引号占位符
  34. this.restoreDefaults = function()
  35. {
  36. singleQuotePlaceholder=defualtSingleQuotePlaceholder;
  37. doubleQuotePlaceholder=defualtDoubleQuotePlaceholder;
  38. return this;
  39. }
  40. //用单引号占位符替换单引号 并返回替换后的字符串
  41. this.replaceSingleQuote=function (str)
  42. {
  43. if(str instanceof  Array)//如果是数组分别替换
  44. {
  45. for(var i=0;i<str.length;i++)
  46. {
  47. str[i]= str[i].replace(/'/g, singleQuotePlaceholder);
  48. }
  49. }else
  50. {
  51. str= str[i].replace(/'/g, singleQuotePlaceholder);
  52. }
  53. return str;
  54. }
  55. //用双引号替换符替换双引号 并返回替换后的字符串
  56. this.replaceDoubleQuote = function (str)
  57. {
  58. // return str.replace(/"/g, doubleQuotePlaceholder);
  59. if(str instanceof  Array)//如果是数组分别替换
  60. {
  61. for(var i=0;i<str.length;i++)
  62. {
  63. str[i]= str[i].replace(/'/g, doubleQuotePlaceholder);
  64. }
  65. }else
  66. {
  67. str= str[i].replace(/'/g, doubleQuotePlaceholder);
  68. }
  69. return str;
  70. }
  71. this.replaceSingleAndDoubleQuote = function(str)
  72. {
  73. // return str.replace(/'/g,singleQuotePlaceholder).replace(/"/g, doubleQuotePlaceholder);
  74. if(str instanceof  Array)//如果是数组分别替换
  75. {
  76. alert("1");
  77. for(var i=0;i<str.length;i++)
  78. {
  79. alert(str[i]);
  80. str[i]= str[i].replace(/'/g,singleQuotePlaceholder).replace(/"/g, doubleQuotePlaceholder);
  81. }
  82. }else
  83. {
  84. str= str.replace(/'/g,singleQuotePlaceholder).replace(/"/g, doubleQuotePlaceholder);
  85. }
  86. return str;
  87. }
  88. //双引号转义
  89. this.escapeDoubleQuote = function(str)
  90. {
  91. if(str instanceof  Array)//如果是数组分别替换
  92. {
  93. alert("1");
  94. for(var i=0;i<str.length;i++)
  95. {
  96. alert(str[i]);
  97. str[i]= str[i].replace(/"/g,"\\\"");
  98. }
  99. }else
  100. {
  101. str= str.replace(/"/g,"\\\"");;
  102. }
  103. return str;
  104. }
  105. }

demo.js 使用范例:

  1. /**
  2. * Created by Administrator on 2015/5/19 0019.
  3. */
  4. $(function(){
  5. //替换单双引号按钮的点击事件
  6. $("#show").click(function(){
  7. var sourceStr =$("#sourceStr").val();//获取需要替换字符
  8. /* 使用方法1 创建对象并自定义 单双引号占位符
  9. var jsonQuotesUtil = new JsonQuotesUtil().setSingleQuotePlaceholder
  10. ("%^^").setDoubleQuotePlaceholder("&&");//创建对象(同时自定义单双引占位符)*/
  11. /* 使用方法2 自定义对象并自定义 单双引号占位符
  12. var jsonQuotesUtil = new JsonQuotesUtil();//创建对象使用默认单双引号占位符
  13. jsonQuotesUtil.setSingleQuotePlaceholder("%^^");
  14. jsonQuotesUtil.setDoubleQuotePlaceholder("##");*/
  15. // jsonQuotesUtil.restoreDefaults();//恢复默认的单双引号占位符
  16. /* 使用方法3 自定义对象并自定义 单双引号占位符
  17. var jsonQuotesUtil = new JsonQuotesUtil();//创建对象使用默认单双引号占位符
  18. */
  19. var jsonQuotesUtil = new JsonQuotesUtil();//创建对象使用默认单双引号占位符
  20. var single =$("#single").val();//获取 单引号占位符
  21. var double = $("#double").val();//获取输入的双引号占位符
  22. if($.trim(single)!="")
  23. {
  24. jsonQuotesUtil.setSingleQuotePlaceholder(single);//设置单引号占位符
  25. }
  26. if($.trim(double)!="")
  27. {
  28. jsonQuotesUtil.setDoubleQuotePlaceholder(double);//设置双引号占位符
  29. }
  30. var reuslt = jsonQuotesUtil.replaceSingleAndDoubleQuote(sourceStr);//同时替换单双引
  31. // var reuslt = jsonQuotesUtil.escapeDoubleQuote(sourceStr)
  32. $("#replaceResult").html(reuslt);//显示替换后的字符串
  33. });
  34. $("#escape").click(function(){
  35. var sourceStr =$("#sourceStr").val();//获取需要替换字符
  36. var reuslt =  new JsonQuotesUtil().escapeDoubleQuote(sourceStr);
  37. $("#replaceResult").html(reuslt);//显示替换后的字符串
  38. });
  39. function arrayTest()//支持数组每个字符串的替换(没有调用)
  40. {
  41. var jsonQuotesUtil = new JsonQuotesUtil();//创建对象使用默认单双引号占位符
  42. var sourceStr = new Array();
  43. sourceStr[0]="dfdfd'dfdf";
  44. sourceStr[1]="dfdfd\"sfdsfsd";
  45. alert("sourceStr"+sourceStr);
  46. var reuslt = jsonQuotesUtil.replaceSingleAndDoubleQuote(sourceStr);//同时替换单双引
  47. alert( "after:"+reuslt);
  48. }
  49. });

JsonQuotesUtil Demo.html

  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. 请输入带有单双引号的字符串:<br/>
  11. <textarea rows="10" cols="65" id="sourceStr">This is a simple solution for SingleQuote( ') and DoubleQuote(") in json </textarea>
  12. <br/><br/>
  13. 单引号占位符:<input id="single" type="text" placeholder="s%0"/> &nbsp; 双引号占位符:<input id="double" type="text" placeholder="d%1"/>
  14. <br/> <br/>
  15. <input type="button" id="show" value="替换单双引号">&nbsp;<input type="button" id="escape" value="转义双引号">
  16. <br/>
  17. <span id="replaceResult"></span>
  18. </form>
  19. </body>
  20. </html>

后台解析Util:

  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. public JsonQuotesUtil()
  18. {
  19. super();
  20. }
  21. public JsonQuotesUtil(String defualtSingleQuotePlaceholder,
  22. String defualtDoubleQuotePlaceholder)
  23. {
  24. super();
  25. this.defualtSingleQuotePlaceholder = defualtSingleQuotePlaceholder;
  26. this.defualtDoubleQuotePlaceholder = defualtDoubleQuotePlaceholder;
  27. }
  28. //恢复单引号(字符串)
  29. public    String restoreSingleQuotes(String str)
  30. {
  31. return str.replaceAll(defualtSingleQuotePlaceholder, "\'");
  32. }
  33. public  String[]  restoreSingleQuotes(String[] strs)//恢复单引号(数组)
  34. {
  35. for(int i =0;i<strs.length;i++)
  36. {
  37. strs[i]= strs[i].replaceAll(defualtSingleQuotePlaceholder, "\'");
  38. }
  39. return strs;
  40. }
  41. //恢复双引号
  42. public   String restoreDoubleQuote(String str)//恢复单引号(数组)
  43. {
  44. return str.replaceAll(defualtDoubleQuotePlaceholder, "\"");
  45. }
  46. public   String[] restoreDoubleQuote(String[] strs)
  47. {
  48. for(int i =0;i<strs.length;i++)
  49. {
  50. strs[i]= strs[i].replaceAll(defualtSingleQuotePlaceholder, "\'");
  51. }
  52. return strs;
  53. }
  54. //恢复单双引号
  55. public   String restoreSingleAndDoubleQuote(String str)
  56. {
  57. return str.replaceAll(defualtSingleQuotePlaceholder, "\'").replaceAll(defualtDoubleQuotePlaceholder, "\"");
  58. }
  59. public   String[] restoreSingleAndDoubleQuote(String[] strs)//恢复单双引号(数组)
  60. {
  61. for(int i =0;i<strs.length;i++)
  62. {
  63. strs[i]= strs[i].replaceAll(defualtSingleQuotePlaceholder, "\'").replaceAll(defualtDoubleQuotePlaceholder, "\"");
  64. }
  65. return strs;
  66. }
  67. public String getDefualtSingleQuotePlaceholder()
  68. {
  69. return defualtSingleQuotePlaceholder;
  70. }
  71. public void setDefualtSingleQuotePlaceholder(String defualtSingleQuotePlaceholder)
  72. {
  73. this.defualtSingleQuotePlaceholder = defualtSingleQuotePlaceholder;
  74. }
  75. public String getDefualtDoubleQuotePlaceholder()
  76. {
  77. return defualtDoubleQuotePlaceholder;
  78. }
  79. public void setDefualtDoubleQuotePlaceholder(String defualtDoubleQuotePlaceholder)
  80. {
  81. this.defualtDoubleQuotePlaceholder = defualtDoubleQuotePlaceholder;
  82. }
  83. }

Util使用方法:

    1. package reg;
    2. public class JsonQuotesUtilDemo
    3. {
    4. public static void main(String args[])
    5. {
    6. //获取前台传入的参数
    7. 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";
    8. JsonQuotesUtil jsonQuotesUtil = new JsonQuotesUtil("s%0","d%1");
    9. System.out.println(jsonQuotesUtil.restoreSingleAndDoubleQuote(str));
    10. }
    11. }

json包含单双引号问题解决方案的更多相关文章

  1. php单双引号嵌套解决方案

    代码如下: <?php $path = "./"; function show_files($path){ //下面是单双引号嵌套解决方案 //echo "< ...

  2. python笔记22-literal_eval函数处理返回json中的单双引号

    前言 在做接口测试的时候,最常见的接口返回数据就是json类型,json类型数据实际上就是字串,通常标准的json格式是可以转化成python里面的对应的数据类型的 有时候开发返回的数据比较坑,不按常 ...

  3. python 单双引号交替的json串

    单双引号交替的json串 1.常见的json串,类似于这种{"isSucess":true, "name":"yoyo", "st ...

  4. php单双引号

    1.定义字符串 定义字符串时,只有一种引号被视为定义符,即单引号或双引号.于是,如果一个字符串由双引号开始,那么只有双引号被分析器解析.这样,你就可以在双引号串中包含任何其他字符,甚至单引号.下面的引 ...

  5. sql语句的单双引号问题

    $current_account_url='<a class="mini-button" iconcls="icon-edit" onclick=&quo ...

  6. JS中反斜杠和单双引号的配合使用效果

    <div id="tag"></div> <div id="tag1"></div> <div id=&q ...

  7. php中alert弹出时单双引号问题

    php代码中单双引号问题是个很重要的问题,使用不当会造成很多麻烦.先记录一下今天写alert遇到的麻烦.我做登录的时候,成功时想弹出个提示说登录成功.写alert语句时不显示.其实就是单双引号弄得不对 ...

  8. JS中字符串拼装 单双引号的处理 字符转义

    js中可能会用到动态追加元素,可能数据也是从后台传过来的,当然有两种思路, 1.在后台拼装好直接返回; 2.在前台js里面拼装, 如果拼装大量的html时可能单双引号就容易出问题;那么如何解决呢?最近 ...

  9. 单双引号的区别,defined容易疏忽的小地方

    单双引号的区别(面试题)                    1.双引号可以解析变量,单引号不行                    2.双引号解析转义字符,单引号不解析转义字符.但是单引号能解析 ...

随机推荐

  1. 064——VUE中vue-router之使用路由别名定制(alias)

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  2. 基于高通 qca4531 mp3 demo板 双系统引导设计

    为了系统和稳定性,flash上有两套系统.在uboot引导阶段会根据当前的bootslot变量,决择运行哪套系统.进入系统之后,会自动挂载数据区,然后启动开关的应用程序. 如上图所示系统有两块存储芯片 ...

  3. 51nod1079

    模板题... 代码: #include <iostream> using namespace std; ],p[]; int main() { int n; while(cin>&g ...

  4. Spring MVC和Spring Data JPA之按条件查询和分页(kkpaper分页组件)

    推荐视频:尚硅谷Spring Data JPA视频教程,一学就会,百度一下就有, 后台代码:在DAO层继承Spring Data JPA的PagingAndSortingRepository接口实现的 ...

  5. ansible 循环register

    在有循环的task中使用register,register保存的是一个列表,整个属性为results results 是一个单个循环返回的结果的列表 - debug: msg="{{ ite ...

  6. 【重大更新】DevExpress v17.2新版亮点—WPF篇(三)

    DevExpress年终击穿底价,单套授权低至67折!仅剩最后10天!查看详情>>> 用户界面套包DevExpress v17.2终于正式发布,本站将以连载的形式为大家介绍各版本新增 ...

  7. 【DevExpress v17.2新功能预告】DevExpress ASP.NET Scheduler新的自适应功能

    自适应Web设计可以帮助您解决各种尺寸的屏幕问题,网站的自适应网页设计可帮助您解决用户使用不同大小屏幕显示数据的问题. 在v17.2中,我们最大化了ASP.NET Scheduler的视图和可视化元素 ...

  8. 入门级:理解FAT32文件系统(转载翻译)

    FAT(File Allocation Table ) 这个网页的目的是帮助你理解怎么样在微软FAT32文件系统下取得数据,处理的硬盘的大小通常在500M到几百G之间.FAT是一个相对简单和纯净的文件 ...

  9. Vue.js 源码学习笔记 - 细节

     1. this._eventsCount = { }    这是为了避免不必要的深度遍历: 在有广播事件到来时,如果当前 vm 的 _eventsCount 为 0, 则不必向其子 vm 继续传播该 ...

  10. Redis学习第五课:Redis Set类型及操作

    Set是集合,它是string类型的无序集合.set是通过hash table实现的,添加.删除和查找的复杂度都是O(1). 对集合我们可以取并集.交集.差集.通过这些操作我们可以实现SNS中的好友推 ...