json包含单双引号问题解决方案
解决方案:在后台处理 JSONArray.fromObject(list).toString()
转自明明如月小角落:
效果DEMO:
JsonQuotesUtil.js
- /**
- * 解决json传输数据时存在 同时存在单引号和双引号的问题
- *
- * 思路:
- *
- * 1 首选将 双引号转义
- *
- * 2 将 单双引号用不容易在字符串中出现的字符分别替换
- * 在后台 分别用过单双引号替换掉即可
- *
- * 注:可以传入字符串 也可以传入字符串数组
- * author: 明明如月 QQ 605283073
- * time:2015年5月19日15:33:44
- */
- function JsonQuotesUtil()
- {
- var defualtSingleQuotePlaceholder="s%0";//默认单引号占位符
- var defualtDoubleQuotePlaceholder="d%1";//默认双引号占位符
- var singleQuotePlaceholder=defualtSingleQuotePlaceholder;//单引号占位符
- var doubleQuotePlaceholder=defualtDoubleQuotePlaceholder;//双引号占位符
- //设置单引号占位符(建议起不容易出现的字符)
- this.setSingleQuotePlaceholder = function(single)
- {
- singleQuotePlaceholder=single;
- return this;
- }
- //设置双引号占位符(建议起不容易出现的字符)
- this.setDoubleQuotePlaceholder = function(double)
- {
- doubleQuotePlaceholder=double;
- return this;
- }
- //恢复默认单引号和双引号占位符
- this.restoreDefaults = function()
- {
- singleQuotePlaceholder=defualtSingleQuotePlaceholder;
- doubleQuotePlaceholder=defualtDoubleQuotePlaceholder;
- return this;
- }
- //用单引号占位符替换单引号 并返回替换后的字符串
- this.replaceSingleQuote=function (str)
- {
- if(str instanceof Array)//如果是数组分别替换
- {
- for(var i=0;i<str.length;i++)
- {
- str[i]= str[i].replace(/'/g, singleQuotePlaceholder);
- }
- }else
- {
- str= str[i].replace(/'/g, singleQuotePlaceholder);
- }
- return str;
- }
- //用双引号替换符替换双引号 并返回替换后的字符串
- this.replaceDoubleQuote = function (str)
- {
- // return str.replace(/"/g, doubleQuotePlaceholder);
- if(str instanceof Array)//如果是数组分别替换
- {
- for(var i=0;i<str.length;i++)
- {
- str[i]= str[i].replace(/'/g, doubleQuotePlaceholder);
- }
- }else
- {
- str= str[i].replace(/'/g, doubleQuotePlaceholder);
- }
- return str;
- }
- this.replaceSingleAndDoubleQuote = function(str)
- {
- // return str.replace(/'/g,singleQuotePlaceholder).replace(/"/g, doubleQuotePlaceholder);
- if(str instanceof Array)//如果是数组分别替换
- {
- alert("1");
- for(var i=0;i<str.length;i++)
- {
- alert(str[i]);
- str[i]= str[i].replace(/'/g,singleQuotePlaceholder).replace(/"/g, doubleQuotePlaceholder);
- }
- }else
- {
- str= str.replace(/'/g,singleQuotePlaceholder).replace(/"/g, doubleQuotePlaceholder);
- }
- return str;
- }
- //双引号转义
- this.escapeDoubleQuote = function(str)
- {
- if(str instanceof Array)//如果是数组分别替换
- {
- alert("1");
- for(var i=0;i<str.length;i++)
- {
- alert(str[i]);
- str[i]= str[i].replace(/"/g,"\\\"");
- }
- }else
- {
- str= str.replace(/"/g,"\\\"");;
- }
- return str;
- }
- }
demo.js 使用范例:
- /**
- * Created by Administrator on 2015/5/19 0019.
- */
- $(function(){
- //替换单双引号按钮的点击事件
- $("#show").click(function(){
- var sourceStr =$("#sourceStr").val();//获取需要替换字符
- /* 使用方法1 创建对象并自定义 单双引号占位符
- var jsonQuotesUtil = new JsonQuotesUtil().setSingleQuotePlaceholder
- ("%^^").setDoubleQuotePlaceholder("&&");//创建对象(同时自定义单双引占位符)*/
- /* 使用方法2 自定义对象并自定义 单双引号占位符
- var jsonQuotesUtil = new JsonQuotesUtil();//创建对象使用默认单双引号占位符
- jsonQuotesUtil.setSingleQuotePlaceholder("%^^");
- jsonQuotesUtil.setDoubleQuotePlaceholder("##");*/
- // jsonQuotesUtil.restoreDefaults();//恢复默认的单双引号占位符
- /* 使用方法3 自定义对象并自定义 单双引号占位符
- var jsonQuotesUtil = new JsonQuotesUtil();//创建对象使用默认单双引号占位符
- */
- var jsonQuotesUtil = new JsonQuotesUtil();//创建对象使用默认单双引号占位符
- var single =$("#single").val();//获取 单引号占位符
- var double = $("#double").val();//获取输入的双引号占位符
- if($.trim(single)!="")
- {
- jsonQuotesUtil.setSingleQuotePlaceholder(single);//设置单引号占位符
- }
- if($.trim(double)!="")
- {
- jsonQuotesUtil.setDoubleQuotePlaceholder(double);//设置双引号占位符
- }
- var reuslt = jsonQuotesUtil.replaceSingleAndDoubleQuote(sourceStr);//同时替换单双引
- 号
- // var reuslt = jsonQuotesUtil.escapeDoubleQuote(sourceStr)
- $("#replaceResult").html(reuslt);//显示替换后的字符串
- });
- $("#escape").click(function(){
- var sourceStr =$("#sourceStr").val();//获取需要替换字符
- var reuslt = new JsonQuotesUtil().escapeDoubleQuote(sourceStr);
- $("#replaceResult").html(reuslt);//显示替换后的字符串
- });
- function arrayTest()//支持数组每个字符串的替换(没有调用)
- {
- var jsonQuotesUtil = new JsonQuotesUtil();//创建对象使用默认单双引号占位符
- var sourceStr = new Array();
- sourceStr[0]="dfdfd'dfdf";
- sourceStr[1]="dfdfd\"sfdsfsd";
- alert("sourceStr"+sourceStr);
- var reuslt = jsonQuotesUtil.replaceSingleAndDoubleQuote(sourceStr);//同时替换单双引
- 号
- alert( "after:"+reuslt);
- }
- });
JsonQuotesUtil Demo.html
- <!DOCTYPE html>
- <html>
- <head lang="en">
- <meta charset="UTF-8">
- <title>JsonQuotesUtil Demo</title>
- <script type="text/javascript" src="libs/js/jquery.js"></script>
- <script type="text/javascript" src="libs/js/JsonQuotesUtil.js"></script>
- <script type="text/javascript" src="libs/js/demo.js"></script>
- </head>
- 请输入带有单双引号的字符串:<br/>
- <textarea rows="10" cols="65" id="sourceStr">This is a simple solution for SingleQuote( ') and DoubleQuote(") in json </textarea>
- <br/><br/>
- 单引号占位符:<input id="single" type="text" placeholder="s%0"/> 双引号占位符:<input id="double" type="text" placeholder="d%1"/>
- <br/> <br/>
- <input type="button" id="show" value="替换单双引号"> <input type="button" id="escape" value="转义双引号">
- <br/>
- <span id="replaceResult"></span>
- </form>
- </body>
- </html>
后台解析Util:
- package reg;
- /**
- * 解决json传输数据时存在 同时存在单引号和双引号的问题
- *
- * 思路:
- * 将 单双引号用不容易在字符串中出现的字符分别替换
- * 在后台 分别用过单双引号替换掉即可
- * 注:可以传入字符串 也可以传入字符串数组
- *
- * author: 明明如月 QQ 605283073
- * time:2015年5月19日15:33:44
- */
- public class JsonQuotesUtil
- {
- private String defualtSingleQuotePlaceholder="s%0";//默认单引号占位符
- private String defualtDoubleQuotePlaceholder="d%1";//默认双引号占位符
- public JsonQuotesUtil()
- {
- super();
- }
- public JsonQuotesUtil(String defualtSingleQuotePlaceholder,
- String defualtDoubleQuotePlaceholder)
- {
- super();
- this.defualtSingleQuotePlaceholder = defualtSingleQuotePlaceholder;
- this.defualtDoubleQuotePlaceholder = defualtDoubleQuotePlaceholder;
- }
- //恢复单引号(字符串)
- public String restoreSingleQuotes(String str)
- {
- return str.replaceAll(defualtSingleQuotePlaceholder, "\'");
- }
- public String[] restoreSingleQuotes(String[] strs)//恢复单引号(数组)
- {
- for(int i =0;i<strs.length;i++)
- {
- strs[i]= strs[i].replaceAll(defualtSingleQuotePlaceholder, "\'");
- }
- return strs;
- }
- //恢复双引号
- public String restoreDoubleQuote(String str)//恢复单引号(数组)
- {
- return str.replaceAll(defualtDoubleQuotePlaceholder, "\"");
- }
- public String[] restoreDoubleQuote(String[] strs)
- {
- for(int i =0;i<strs.length;i++)
- {
- strs[i]= strs[i].replaceAll(defualtSingleQuotePlaceholder, "\'");
- }
- return strs;
- }
- //恢复单双引号
- public String restoreSingleAndDoubleQuote(String str)
- {
- return str.replaceAll(defualtSingleQuotePlaceholder, "\'").replaceAll(defualtDoubleQuotePlaceholder, "\"");
- }
- public String[] restoreSingleAndDoubleQuote(String[] strs)//恢复单双引号(数组)
- {
- for(int i =0;i<strs.length;i++)
- {
- strs[i]= strs[i].replaceAll(defualtSingleQuotePlaceholder, "\'").replaceAll(defualtDoubleQuotePlaceholder, "\"");
- }
- return strs;
- }
- public String getDefualtSingleQuotePlaceholder()
- {
- return defualtSingleQuotePlaceholder;
- }
- public void setDefualtSingleQuotePlaceholder(String defualtSingleQuotePlaceholder)
- {
- this.defualtSingleQuotePlaceholder = defualtSingleQuotePlaceholder;
- }
- public String getDefualtDoubleQuotePlaceholder()
- {
- return defualtDoubleQuotePlaceholder;
- }
- public void setDefualtDoubleQuotePlaceholder(String defualtDoubleQuotePlaceholder)
- {
- this.defualtDoubleQuotePlaceholder = defualtDoubleQuotePlaceholder;
- }
- }
Util使用方法:
- package reg;
- public class JsonQuotesUtilDemo
- {
- public static void main(String args[])
- {
- //获取前台传入的参数
- 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";
- JsonQuotesUtil jsonQuotesUtil = new JsonQuotesUtil("s%0","d%1");
- System.out.println(jsonQuotesUtil.restoreSingleAndDoubleQuote(str));
- }
- }
json包含单双引号问题解决方案的更多相关文章
- php单双引号嵌套解决方案
代码如下: <?php $path = "./"; function show_files($path){ //下面是单双引号嵌套解决方案 //echo "< ...
- python笔记22-literal_eval函数处理返回json中的单双引号
前言 在做接口测试的时候,最常见的接口返回数据就是json类型,json类型数据实际上就是字串,通常标准的json格式是可以转化成python里面的对应的数据类型的 有时候开发返回的数据比较坑,不按常 ...
- python 单双引号交替的json串
单双引号交替的json串 1.常见的json串,类似于这种{"isSucess":true, "name":"yoyo", "st ...
- php单双引号
1.定义字符串 定义字符串时,只有一种引号被视为定义符,即单引号或双引号.于是,如果一个字符串由双引号开始,那么只有双引号被分析器解析.这样,你就可以在双引号串中包含任何其他字符,甚至单引号.下面的引 ...
- sql语句的单双引号问题
$current_account_url='<a class="mini-button" iconcls="icon-edit" onclick=&quo ...
- JS中反斜杠和单双引号的配合使用效果
<div id="tag"></div> <div id="tag1"></div> <div id=&q ...
- php中alert弹出时单双引号问题
php代码中单双引号问题是个很重要的问题,使用不当会造成很多麻烦.先记录一下今天写alert遇到的麻烦.我做登录的时候,成功时想弹出个提示说登录成功.写alert语句时不显示.其实就是单双引号弄得不对 ...
- JS中字符串拼装 单双引号的处理 字符转义
js中可能会用到动态追加元素,可能数据也是从后台传过来的,当然有两种思路, 1.在后台拼装好直接返回; 2.在前台js里面拼装, 如果拼装大量的html时可能单双引号就容易出问题;那么如何解决呢?最近 ...
- 单双引号的区别,defined容易疏忽的小地方
单双引号的区别(面试题) 1.双引号可以解析变量,单引号不行 2.双引号解析转义字符,单引号不解析转义字符.但是单引号能解析 ...
随机推荐
- 实现自己的ls命令
一步步实现,先看最简单的ls的指令: ls不带参数,直接打印文件名 dst.txt main10.c main11.c main12.c main13.c main14.c~ main15.c~ ma ...
- 用Maven创建第一个web项目
http://www.cnblogs.com/leiOOlei/p/3361633.html 一.创建项目 1.Eclipse中用Maven创建项目 上图中Next 2.继续Next 3.选maven ...
- java并发编程:线程安全管理类--原子操作类--AtomicReferenceFieldUpdater<T,V>
1.类 AtomicReferenceFieldUpdater<T,V> public abstract class AtomicReferenceFieldUpdater<T,V& ...
- SSO-CAS单点登录
基本概念 单点登录SSO ,是目前比较流行的企业业务整合的解决方案之一.SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统. CAS(Centeral Authenti ...
- harbor私有镜像仓库的搭建与使用与主从复制
harbor私有镜像仓库,私有仓库有两种,一种是harbor,一种是小型的私有仓库,harbor有两种模式,一种是主 从,一种是高可用仓库,项目需求,需要两台服务器,都有docker.ldap权限统一 ...
- ios平台cocos2d-x播放音频、视频、音效的Demo(支持网络视频)
最近由ios应用转做游戏,游戏开始时需要播放一个视频,由于本身cocos2d-x播放视频的相关库,在网上搜到的资料都不是很全,我自己试过在cocos2dx直接调用ios的MediaPlayer来播放, ...
- 20165202 Mypwd
实现mypwd(选做,加分) 1 学习pwd命令 2 研究pwd实现需要的系统调用(man -k; grep),写出伪代码 3 实现mypwd 4 测试mypwd 提交过程博客的链接 实现过程 使用m ...
- axios 拦截 , 页面跳转, token 验证
第一步: 路由 多添加一个自定义字段 requireAuth path: '/repository', name: 'repository', meta: { requireAuth: true, / ...
- 将PS/2接口鼠标改造成USB接口鼠标
改造接线图 不是所有PS/2鼠标都可以改为USB鼠标的,可以改的PS/2鼠标的特征: A.早期PS/2鼠标电路板一般带有两块集成电路,(一块光电感应,一块按键或USB协议转换,和一只24M的晶体振荡器 ...
- liunx服务程序的安装及配置
1.系统运行级别: