解决方案:在后台处理 JSONArray.fromObject(list).toString()
转自明明如月小角落:
效果DEMO:
JsonQuotesUtil.js
[javascript] view plain copy
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. 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. "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. "1");
117. for(var i=0;i<str.length;i++)
118. {
119. alert(str[i]);
120. "/g,"\\\"");
121.
122. }
123. else
124. {
125. "/g,"\\\"");;
126. }
127. return str;
128. }
129. }
130.
demo.js 使用范例:
[javascript] view plain copy
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. //设置单引号占位符
40. }
41.
42. if($.trim(double)!="")
43. {
44. 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. "dfdfd'dfdf";
77. "dfdfd\"sfdsfsd";
78. "sourceStr"+sourceStr);
79.
80. var reuslt = jsonQuotesUtil.replaceSingleAndDoubleQuote(sourceStr);//同时替换单双引
81.
82. 号
83. "after:"+reuslt);
84. }
85. });
JsonQuotesUtil Demo.html
[html] view plain copy
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"/> 双引号占位符:<input id="double" type="text" placeholder="d%1"/>
16.
17. <br/> <br/>
18. <input type="button" id="show" value="替换单双引号"> <input type="button" id="escape" value="转义双引号">
19. <br/>
20. <span id="replaceResult"></span>
21.
22.
23.
24. </form>
25.
26. </body>
27. </html>
后台解析Util:
[java] view plain copy
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. "\'");
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. "\'");
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. "\'").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使用方法:
[java] view plain copy
1. package reg;
2.
3. public class JsonQuotesUtilDemo
4. {
5.
6.
7.
8. public static void main(String args[])
9. {
10. //获取前台传入的参数
11. "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. new JsonQuotesUtil("s%0","d%1");
14. System.out.println(jsonQuotesUtil.restoreSingleAndDoubleQuote(str));
15. }
16.
17.
18. }