json解析特殊字符(如何处理JSON中的特殊字符)

:暂无数据 2026-05-14 08:00:01 2

json解析特殊字符(如何处理JSON中的特殊字符)

其实json解析特殊字符的问题并不复杂,但是又很多的朋友都不太了解如何处理JSON中的特殊字符,因此呢,今天小编就来为大家分享json解析特殊字符的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!

本文目录

如何处理JSON中的特殊字符

JSON 是适用于 Ajax 应用程序的一种有效格式,原因是它使 JavaScript 对象和字符串值之间得以快速转换。由于 Ajax
应用程序非常适合将纯文本发送给服务器端程序并对应地接收纯文本,相比不能生成文本的 API,能生成文本的 API 自然更可取;而且,JSON 让您能够处理本地
JavaScript 对象,而无需为如何表示这些对象多费心思。
XML 也可以提供文本方面的类似益处,但用于将 JavaScript 对象转换成 XML 的几个现有 API 没有 JSON API
成熟;有时,您必须在创建和处理 JavaScript 对象时格外谨慎以确保所进行的处理能与所选用的 XML 会话 API 协作。但对于
JSON,情况就大不相同:它能处理几乎所有可能的对象类型,并会返回给您一个非常好的 JSON 数据表示。 因此,JSON 的最大价值在于可以将
JavaScript 真的作为 JavaScript 而非数据格式语言进行处理。
您所学到的所有有关使用 JavaScript 对象的技巧都可以应用到代码中,而无需为如何将这些对象转变成文本而多费心思。
1. 回车问题
JSON传值的时候,如果有回车符就会挂的。我们可以使用正则来去掉回车符:
view
source
print?
1
$str = preg_replace("’(+’", "", $str);
2
3
// 不用正则
4
$str = str_replace("\n","",$str);
转出来的字符串就没有回车符的困扰了。
顺便记录一个PHP过滤脚本:
view
source
print?
01
《?php
02
// $document 应包含一个 HTML 文档。
03
// 本例将去掉 HTML 标记,javascript 代码
04
// 和空白字符。还会将一些通用的
05
// HTML 实体转换成相应的文本。
06
07
$search = array ("’《script*?》.*?《/script》’si", // 去掉 javascript
08
"’《*?》’si", // 去掉 HTML 标记
09
"’(+’", // 去掉空白字符
10
"’&(quot|#34);’i", // 替换 HTML 实体
11
"’&(amp|#38);’i",
12
"’&(lt|#60);’i",
13
"’&(gt|#62);’i",
14
"’&(nbsp|#160);’i",
15
"’&(iexcl|#161);’i",
16
"’&(cent|#162);’i",
17
"’&(pound|#163);’i",
18
"’&(copy|#169);’i",
19
"’&#(\d+);’e"); // 作为 PHP 代码运行
20
21
$replace = array ("",
22
"",
23
"\\1",
24
"\"",
25
"&",
26
"《",
27
"》",
28
" ",
29
chr(161),
30
chr(162),
31
chr(163),
32
chr(169),
33
"chr(\\1)");
34
35
$text = preg_replace ($search, $replace, $document);
36
?》
2. HTML特殊字符
从服务器端以JSON格式将数据传递到客户端后,通过JS显示在HTML页面时,有一些特殊字符不能直接显示,如后台传递过来的是
’《b》msg《/b》 #’ 通过JS显示在HTML页面中时,显示成了 msg # ,并不是msg
#,这是由于《与》之间的内容看作是HTML标签了,而以&开头的 与#为HTML实体,所以显示不正常。
解决办法很简单,在JS将其渲染到HTML页面前转换一下即可:
view
source
print?
01
《script type="text/javascript"》
02
var str = ’《b》msg《/b》 #’;
03
document.all.div1.innerHTML=’《pre》’+str+’《/pre》’;
04
05
//js中的字符串正常显示在HTML页面中
06
String.prototype.displayHtml= function(){
07
//将字符串转换成数组
08
var
strArr = this.split(’’);
09
//HTML页面特殊字符显示,空格本质不是,但多个空格时浏览器默认只显示一个,所以替换
10
var
htmlChar="&《》";
11
for(var
i = 0; i《 str.length;i++){
12
//查找是否含有特殊的HTML字符
13
if(htmlChar.indexOf(str.charAt(i)) !=-1){
14
//如果存在,则将它们转换成对应的HTML实体
15
switch
(str.charAt(i)) {
16
case
’《’:
17
strArr.splice(i,1,’《’);
18
break;
19
case
’》’:
20
strArr.splice(i,1,’》’);
21
break;
22
case
’&’:
23
strArr.splice(i,1,’&’);
24
}
25
}
26
}
27
return
strArr.join(’’);
28
}
29
alert(str.displayHtml());
30
document.all.div2.innerHTML=str.displayHtml();
31
《/script》
3. escape()函数
该函数可以处理空格、斜线和其他任何可能影响浏览器的内容,并将它们转换成 Web 可用字符(比如,空格会被转换成
%20,浏览器并不会将其视为空格处理,而是不做更改,将其直接传递到服务器)。之后,服务器会(通常自动)再把它们转换回它们传输后的本来 “面目”。
view
source
print?
1
var url = "nowamagic.php?people="
+ escape(people.toJSONString());
2
request.open("GET", url, true);
3
request.onreadystatechange = updatePage;
4
request.send(null);
这种做法的缺点有两个: 在使用 GET 请求发送大块数据时,对 URL 字符串有长度限制。虽然这个限制很宽泛,但对象的 JSON
字符串表示的长度可能超出您的想象,尤其是在使用极其复杂的对象时更是如此。在跨网络以纯文本发送所有数据的时候,发送数据面临的不安全性超出了您的处理能力。
简言之,以上是 GET 请求的两个限制,而不是简单的两个与 JSON
数据相关的事情。在想要发送用户名和姓之外的更多内容,比如表单中的选择时,二者可能会需要多加注意。若要处理任何机密或极长的内容,可以使用 POST 请求。
4. 引号问题
JSON中如果包含引号或双引号,会破坏JSON的格式。有两种方法可以解决。
在入库的时候可以使用addslashes()函数处理一下字符串,给引号前加上斜杠。被改的字符包括单引号 (’)、双引号 (")、反斜线 backslash
(\) 以及空字符NULL。
view
source
print?
1
$text = addslashes($text);
JavaScript的话,可以这样:
view
source
print?
1
function valueReplace(v){
2
v=v.toString().replace(new
RegExp(’()’, ’g’),"\\\"");
3
return
v;
4
}
5
var eValue = encodeURI($.trim(valueReplace(e.value)))

iOS Json解析中特殊字符串(’\\’)处理

需解析的JSON:
事出起因:源自公司一个接口不能解析。。。。

以下为一个技术群里的聊天记录截图:

看了这么多,我这边的处理就是:
将需要解析成json的字符串进行处理:

反正要做好预防工作,不然后台一个不小心,咱就得背锅嘿嘿嘿(没针对后台哈~~~:speak-no-evil_monkey:)
类似情况的文章:
***隐藏网址***
***隐藏网址***
...

反序列化json,出错,因为有特殊字符,请问怎么处理

估计是格式无法转换的错误。
看下json数据格式对不对。
最简单的办法是你写一个对象把他序列化成json,看看和传过来的json有什么区别。
比如说bool值,传过来的到底是true还是字符串的"true"或者是1

关于本次json解析特殊字符和如何处理JSON中的特殊字符的问题分享到这里就结束了,如果解决了您的问题,我们非常高兴。

json解析特殊字符(如何处理JSON中的特殊字符)

本文编辑:admin

更多文章:


函数图像的概念初中(什么是函数图像)

函数图像的概念初中(什么是函数图像)

各位老铁们好,相信很多人对函数图像的概念初中都不是特别的了解,因此呢,今天就来为大家分享下关于函数图像的概念初中以及什么是函数图像的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!

2026年9月7日 22:30

blast premier春季赛(csgo战队vitality有谁)

blast premier春季赛(csgo战队vitality有谁)

“blast premier春季赛”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看blast premier春季赛(csgo战队vitality有谁)!

2026年9月7日 21:50

send out用法及例句(send out是什么意思)

send out用法及例句(send out是什么意思)

各位老铁们好,相信很多人对send out用法及例句都不是特别的了解,因此呢,今天就来为大家分享下关于send out用法及例句以及send out是什么意思的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!

2026年9月7日 20:30

全球新冠肺炎疫情背景下航运发展(盐田港复苏日志:半年历劫从“低谷”到“爆仓” 疫情之后巨轮如何越洋航行)

全球新冠肺炎疫情背景下航运发展(盐田港复苏日志:半年历劫从“低谷”到“爆仓” 疫情之后巨轮如何越洋航行)

大家好,关于全球新冠肺炎疫情背景下航运发展很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于盐田港复苏日志:半年历劫从“低谷”到“爆仓” 疫情之后巨轮如何越洋航行的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决

2026年9月7日 17:10

matlab求解带字母参数方程组(我想matlab求一个关于x,y的方程组 ab c d f e h m n 都是参数)

matlab求解带字母参数方程组(我想matlab求一个关于x,y的方程组 ab c d f e h m n 都是参数)

大家好,关于matlab求解带字母参数方程组很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于我想matlab求一个关于x,y的方程组 ab c d f e h m n 都是参数的知识点,相信应该可以解决大家的一些困惑和问题,

2026年9月7日 16:30

oracle中的循环语句(下面哪个不是oracle程序设计中的循环语句 a for)

oracle中的循环语句(下面哪个不是oracle程序设计中的循环语句 a for)

本篇文章给大家谈谈oracle中的循环语句,以及下面哪个不是oracle程序设计中的循环语句 a for对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

2026年9月7日 15:30

多表查询怎么做(Excel技巧:如何多表同步筛选)

多表查询怎么做(Excel技巧:如何多表同步筛选)

各位老铁们好,相信很多人对多表查询怎么做都不是特别的了解,因此呢,今天就来为大家分享下关于多表查询怎么做以及Excel技巧:如何多表同步筛选的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!

2026年9月7日 15:10

服装店网站网页设计(服装网站建设目标设计要看甲方)

服装店网站网页设计(服装网站建设目标设计要看甲方)

“服装店网站网页设计”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看服装店网站网页设计(服装网站建设目标设计要看甲方)!

2026年9月7日 14:10

电脑里2个系统怎么删除一个(电脑开机显示有两个系统,如何删除一个)

电脑里2个系统怎么删除一个(电脑开机显示有两个系统,如何删除一个)

大家好,电脑里2个系统怎么删除一个相信很多的网友都不是很明白,包括电脑开机显示有两个系统,如何删除一个也是一样,不过没有关系,接下来就来为大家分享关于电脑里2个系统怎么删除一个和电脑开机显示有两个系统,如何删除一个的一些知识点,大家可以关注

2026年9月7日 12:20

苹果手机代码大全(恢复更新固件iOS未知错误代码解决大全)

苹果手机代码大全(恢复更新固件iOS未知错误代码解决大全)

大家好,今天小编来为大家解答以下的问题,关于苹果手机代码大全,恢复更新固件iOS未知错误代码解决大全这个很多人还不知道,现在让我们一起来看看吧!

2026年9月7日 10:20

最近更新

blast premier春季赛(csgo战队vitality有谁)
2026-09-07 21:50:01 浏览:0
热门文章

dessert(dessert是什么意思)
2026-05-03 12:45:03 浏览:7
标签列表