字符串转换成JSON的三种方式

摘要:
在使用Ajax开发项目的过程中,通常需要将JSON格式的字符串返回到前端,前端会将它们解析为JS对象。JSON的概念没有写入ECMA-262中的标准,但它在ECMA-262正式引入,包括全局JSON对象和Date的toJSON方法。2.newFunction形式很奇怪。函数strToJson{varjson=();returnjson;}在IE6/7中,当字符串包含换行符(n)时,newFunction无法解析,但eval可以解析。3.使用全局JSON对象。函数strToJson{returnJSON.parse;}目前,IE8/Firefox 3.5+/Chrome4/Safari4/Opera10已经实现了该方法。前两个还可以。
采用Ajax的项目开发过程中,经常需要将JSON格式的字符串返回到前端,前端解析成JS对象(JSON )。
ECMA-262(E3) 中没有将JSON概念写到标准中,但在 ECMA-262(E5) 中JSON的概念被正式引入了,包括全局的JSON对象和Date的toJSON方法。 

1,eval方式解析,恐怕这是最早的解析方式了。
function strToJson(str){
     var json = eval('(' + str + ')');
     returnjson;
}

记得str两旁的小括号哦。

2newFunction形式,比较怪异哦。function strToJson(str){
    var json = (new Function("return " +str))();
    returnjson;
}

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

3,使用全局的JSON对象。
function strToJson(str){
    returnJSON.parse(str);
}

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

使用JSON.parse需严格遵守JSON规范,如属性都需用引号引起来,如下
var str = '{name:"jack"}';
var obj = JSON.parse(str); //--> parse error
name没有用引号引起来,使用JSON.parse所有浏览器中均抛异常,解析失败。而前两种方式则没问题。

相关:

http://blogs.msdn.com/ie/archive/2008/09/10/native-json-in-ie8.aspx 
https://developer.mozilla.org/en/Using_JSON_in_Firefox 

免责声明:文章转载自《字符串转换成JSON的三种方式》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Linux 之不同运维人员共用root 账户权限审计前端JS批量添加校验数据唯一性下篇

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

随便看看

web前端常见的加密算法介绍

如今,信息安全越来越受到重视,前端的各种加密变得更加重要。目前,常见的加密算法可分为三种类型的对称加密算法:AES,…不对称加密算法:RSA,…哈希算法:MD5,…对称加密算法对称加密是指使用相同密钥进行加密和解密的加密算法。如果一方的密钥被泄露,加密的信息将是不安全的。使用场景:AESAES用于本地数据加密、https通信、网络传输等:高级加密标准是最常见...

阿里巴巴开源性能监控神器Arthas初体验

今天跟大家介绍一款阿里巴巴开源的性能分析神器Arthas官方网站:https://alibaba.github.io/arthas/index.htmlArthas能为你做什么事情呢?接下来,我们找个项目实际体验一下Arthas。﹏﹏﹏﹏上述几个命令只是性能测工作中常用的一些操作,Arthas还有很多其他维度的监控数据,大家可以去官网看下用户手册学习更多操作...

axios 学习文档

Axios是一个基于承诺的HTTP库,可以在浏览器和node.js中使用。执行POST请求axis.POST.then。接住执行多个并发请求函数getUserAccount(){returnaxios.get;}函数getUserPermissions(){returnaxios.get;}全部承诺。然后axios API可以通过传递相关配置来请求axios...

Animation

Animation(function($){functionactive(target,index){varactions=$(target).data('actions');if(index˂actions.length){varcallee=arguments.callee;varaction=actions[index];if(!$(target).d...

Linux shell脚本,按顺序批量启动多个jar包,批量启动spring cloud的jar包

Linux shell脚本,按顺序批量启动多个jar包,批量启动spring cloud jar包1.手动逐个启动:nohupjavajarurekaserver。jar˃../logs/eurekaserver.log2˃&1&nohupjavajarconfigserver。jar˃../logs/configserver.log2˃&a...

halo项目源码本地部署解决方案

找不到build-info.properties文件(运行时)Beanmethod'buildProperties'in'ProjectInfoAutoConfiguration'notloaded@ConditionalOnResourcedidnotfindresource'${spring.info.build.location:classpath:M...