程序员必知:字符串转换成JSON的三种方式

简介: 程序员必知:字符串转换成JSON的三种方式

采用Ajax的项目开发过程中,经常需要将JSON格式的字符串返回到前端,前 端解析成JS对象(JSON )。

ECMA-262(E3) 中没有将JSON概念写到标准中,但在 ECMA-262(E5) 中JSON的概念被正式引入了,包括全局的JSON对象和Date的toJSON方法。

1,eval方式解析,恐怕这是最早的解析方式了。

?1234function strToJson(str){ var json = eval('(' + str + ')'); return json;}

记得str两旁的小括号哦。

2,new //代码效果参考:http://www.zidongmutanji.com/bxxx/434362.html

Function形式,比较怪异哦。

?1234function strToJson(str){ var json = (new Function("return " + str)//代码效果参考:http://www.zidongmutanji.com/zsjx/521143.html

)(); return json;}

IE6/7中当字符串中含有换行(\n)时,new Function不能解析,但eval却可以。

3,使用全局的JSON对象。

?123function //代码效果参考:http://www.zidongmutanji.com/bxxx/412830.html

strToJson(str){ return JSON.parse(str);}

目前IE8(S)/Firefox3.5+/Chrome4/Safari4/Opera10 已实现了该方法。

使用JSON.parse需严格遵守JSON规范,如属性都需用引号引起来,如下

?12var str = '{name:"jack"}';var obj = JSON.parse(str); // --> parse error

name没有用引号引起来,使用JSON.parse所有浏览器中均抛异常,解析失败。而前两种方式则没问题。

相关:

相关文章
|
小程序 JavaScript
【微信小程序】之自定义九宫格展示row-grid(每行显示三个)
【微信小程序】之自定义九宫格展示row-grid(每行显示三个)
|
SQL 监控 druid
Druid未授权访问 漏洞复现
Druid未授权访问 漏洞复现
16761 0
|
NoSQL Redis
Redis 之 WRONGTYPE Operation against a key holding the wrong kind of value【bug解决】
Redis 之 WRONGTYPE Operation against a key holding the wrong kind of value【bug解决】
11280 0
|
12月前
|
JavaScript
Vue组件点击事件不触发的问题,添加事件修饰符native解决
Vue组件点击事件不触发的问题,添加事件修饰符native解决
1095 0
|
12月前
|
Java Apache Maven
Java将word文档转换成pdf文件的方法?
【10月更文挑战第13天】Java将word文档转换成pdf文件的方法?
3580 1
|
11月前
|
JSON 搜索推荐 C++
vscode如何更改背景颜色主题,黑色或白色?
【11月更文挑战第16天】在 VS Code 中更改背景颜色主题,可通过三种方式实现:1) 使用快捷键 Ctrl+K 和 Ctrl+T(Mac 上为 Command+K 和 Command+T)选择主题;2) 通过菜单中的“管理”->“颜色主题”选项选择;3) 修改 settings.json 文件中的 "workbench.colorTheme" 属性。此外,用户还可从扩展市场安装更多主题以满足个性化需求。
22747 6
|
SQL 机器学习/深度学习 分布式计算
|
SQL 数据库
【SQL】已解决:SQL错误(208):对象名‘STRING_SPLIT‘无效
【SQL】已解决:SQL错误(208):对象名‘STRING_SPLIT‘无效
1577 0
|
XML JSON Java
老程序员分享:JAVA对象转换JSON
老程序员分享:JAVA对象转换JSON
1070 0
解决ERROR in Conflict: Multiple assets emit different content to the same filename index.html 的问题
解决ERROR in Conflict: Multiple assets emit different content to the same filename index.html 的问题
1056 0