前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >json包含单双引号问题解决方案

json包含单双引号问题解决方案

作者头像
明明如月学长
发布2021-08-27 10:51:46
1.7K0
发布2021-08-27 10:51:46
举报
文章被收录于专栏:明明如月的技术专栏

原创作品  转载请注明出处

最近项目中  遇到需要JSON传数据  但是某个字段 里面可能含有 双引号和单引号  导致出现错误

为了方便 写了一个工具类,比较好用。

支持“链式编程”

  分享给大家

360网盘下载地址:http://yunpan.cn/cjCrRZj9uc8hE  访问密码 79f3

效果DEMO:

JsonQuotesUtil.js

代码语言:javascript
复制
/**
 * 解决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

 demo.js 使用范例:

代码语言:javascript
复制
/**
 * 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

代码语言:javascript
复制
    JsonQuotesUtil Demo
    
    
    


    请输入带有单双引号的字符串:

          This is a simple solution for SingleQuote( ') and DoubleQuote(") in json 




     单引号占位符:   双引号占位符:

后台解析Util:

代码语言:javascript
复制
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

Util使用方法:

代码语言:javascript
复制
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));
	}
	

}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2015/05/19 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档