Json数据中的特殊字符处理

摘要:
今天在项目中遇到一个问题,页面上的数据突然显示不出来了,查验后得知是Json数据出现了问题。使用JSON从后台向前台传输数据的时候,当数据本身含有一些特殊字符,会导致JSON数据的解析出错。12是输出的HTML代码换行输出给浏览器换行用户在Textarea输入内容时,有时候会输入双引号,回车或者换行符,保存时,这些特殊符号也也文本内容一起保存到数据库里去了,当获取这些数据时,Json的解析就会出错下面是有问题数据:?

今天在项目中遇到一个问题,页面上的数据突然显示不出来了,查验后得知是Json数据出现了问题。使用JSON从后台向前台传输数据的时候,当数据本身含有一些特殊字符,会导致JSON数据的解析出错。如果内容中本身就包含了 """ 双引号、" " 回车换行这时候,数据的解析就会出现问题。

, , 的区别

1
2
3
4
是换行,英文是New line,表示使光标到行首
是回车,英文是Carriage return,表示使光标下移一格
表示回车换行

" "与"</br>"的区别

1
2
是输出的HTML代码换行(查看html代码时,代码换行了)
<br />输出给浏览器换行(看网页效果时,文字换行了)

用户在Textarea输入内容时,有时候会输入双引号,回车或者换行符,保存时,这些特殊符号也也文本内容一起保存到数据库里去了,当获取这些数据时,Json的解析就会出错

下面是有问题数据:

1
2
3
4
5
6
7
8
{
"employees": [
{ "firstName":"Bill", "lastName":"Gates”"},
{ "firstName":"George
回车了", "lastName":"Bush"},
{ "firstName":"Thomas", "lastName":"Carter"}
]
}

不改动数据数据,怎样才能把数据传到页面上去呢。思路是后端把 (回车)转成<br/>再,前端再把<br/>转回

C# 代码:

1 public static string EncodeTextareaChar(string str)
2         {
3             if (str == null) return null;
4             return str.Replace(""", "\"").Replace("
", "<br/>").Replace("
", "<br/>").Replace("
", "<br/>");
5         }

Javascript代码

1 function encodeTextarea(str) {
2         str = str.replace(/&lt;/g, "<").replace(/&gt;/g,">");
3         var str = str.replace(/<br/>/g, "
");
4         return str;
5     }

两种语言都有 replace() 方法,他们也略微有些区别,

Javascript的 replace 只替换一次,如"abcaebacd"中有两个c,它只替换第一个,replace("c","s"),结果是"absaebacd"

C#的replace替换全部,replace("c","s"),结果是"absaebasd"

注:Javascript 要想实现全部替换,可以 replace(/c/g,"s"), / /之间是要替换的内容,g为全局标志

1
2
3
为什么要加这一个呢?
str.replace(/&lt;/g, "<").replace(/&gt;/g,">");
因为后端传过来的 <br/> 变成了 &lt;br/&gt;

免责声明:文章转载自《Json数据中的特殊字符处理》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Ubuntu 18.04 程序设置开机自启动AutoHotKey 快速入门下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

各种在线编辑器漏洞

常见的一些编辑器:ewebeditor ewebeditornet fckeditoreditor southidceditor SouthidcEditor bigcneditor其实如果大家多关注编辑器的话,会有惊人的发现,尤其是jsp,php版的,一个webshell基本上就是一台服务器啊~~~一:首先说说最近不断爆洞的ewebeditor(一)ASP...

gson 数据里面设置特殊字符不转换为十六进制

Gson gson = builder.create(); 如果用这个创建一个gson对象,如果字符串里面包好特殊字符“=”,就会转义为\u003d Gson gson = builder.disableHtmlEscaping().create(); 如果用这个创建一个gson对象,如果字符串里面包好特殊字符“=”,就不会进行转义,显示原始字符。...

python3替换文件的内容

目标:替换文件中的字符串内容   方法1:使用fileinput包   import fileinput for line in fileinput.input(“要修改的文件名", inplace=1): line=line.replace(“要修改的字符串1”,”要替换的字符串1"") line=line.replace(“要修改...

location.href和location.replace和location.reload的不同(location.replace不记录历史)

location.href iframe.location.href window.location.href      整个URL字符串(在浏览器中就是完整的地址栏) reload 方法,该方法强迫浏览器刷新当前页面。     语法: location.reload([bForceGet])                               ...

mongodb模糊查询包含特殊字符

mongodb中的待特殊字符的模糊查询需要转义下才能查到 (name: /wo*2hjf/ 查不到 name: /wo*2hjf/ 查得到) let str=wo*2hjf; let filter1={ name: new RegExp(str) }; let filter2={ name: new RegExp(str.replace(/*/g,'\*...

java.net.URISyntaxException的解决办法

近日在用HttpClient访问抓取汇率时,为了省力,直接采用 String url = "http://api.liqwei.com/currency/?exchange=usd|cny&count=1"; HttpClient client = new DefaultHttpClient(); HttpGet httpget = new Htt...