ajax获取json部分字符被转义的简单处理办法
如题,处理的方法非常简单,就是将转义后字符替换回去。字符的转义前和转义后的对照表可以去网上查一下,这里列出几个经常会用的:
字符 | 转义字符 |
---|---|
“ | " |
空格 | |
& | & |
< | < |
> | > |
知道字符转义的前后对照,下面就可以进行替换工作了,替换使用js中的自带方法 replace:
//使用格式
str.replace(正则表达式或字符串, 替换的内容); //返回将str转义后的字符串,但不会修改str本身。
//一般使用格式
str = str.replace(正则表达式或字符串, 替换的内容);
注意:replace方法默认情况下只能替换查询到的第一个位置的符合条件的值,如果使用字符串作为替换条件,是无法全部替换的。这时可以使用正则表达式中\g全局替换标识进行操作。
刚才解释了为了能够全部替换,我们就需要用到正则表达式。正则表达式使用时以 \ 为开头。针对于当前问题,一般要进行的字符是 <,>," ,相对用的正则表达式就是 ***<*** , ***>*** 和 ***"** ,其中号只是用于强调。基本正则表达式写完了,后面还需要加上\g参数,代表全部进行替换。综上,最终代码:
//进行替换
str = str.replace(\<, '<');
str = str.replace(\>, '>');
str = str.replace(\", '\"');//注意替换成双引号时要加上转义符\,这是json本身的要求,否则的话可能无法解析。
//省事一些也可以使用链式写法
str = str.replace(\<, '<').replace(\>, '>').replace(\", '\"');//顺序无所谓,主要是都替换了就行
结语
对于其他的内容也同样可以采用这种方法,这是替换字符常用的方法也是解决当json中存在html代码在前端获取时被转换成转义字符的方法之一。