文档章节

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

AK_47
 AK_47
发布于 2016/03/30 22:45
字数 303
阅读 2
收藏 0

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

 

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

 

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

 

Js代码   收藏代码
  1. function strToJson(str){  
  2.      var json = eval('(' + str + ')');  
  3.      return json;  
  4. }  

 

记得别忘了str两旁的小括号。

 

2,new Function形式,比较怪异哦。如下

 

Js代码   收藏代码
  1. function strToJson(str){  
  2.     var json = (new Function("return " + str))();  
  3.     return json;  
  4. }  

 

3,使用全局的JSON对象,如下:

 

Js代码   收藏代码
  1. function strToJson(str){  
  2.     return JSON.parse(str);  
  3. }  

 

目前 IE8(S)/Firefox3.5+/Chrome4/Safari4/Opera10 已实现了该方法,以下是部分资料:

 

http://blogs.msdn.com/ie/archive/2008/09/10/native-json-in-ie8.aspx

https://developer.mozilla.org/en/Using_JSON_in_Firefox

 

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

 

Js代码   收藏代码
  1. var str = '{name:"jack"}';  
  2. var obj = JSON.parse(str); // --> parse error  
 

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

 

 

另见:Chrome中JSON.parse的特殊实现

© 著作权归作者所有

共有 人打赏支持
AK_47
粉丝 16
博文 533
码字总数 569998
作品 0
嘉定
程序员
私信 提问
.NET通用JSON解析/构建类的实现(c#)

在.NET Framework 3.5中已经提供了一个JSON对象的序列化工具,但是他是强类型的,必须先按JSON对象的格式定义一个类型,并将类型加上JSON序列化特性。本文将试图提供一个高度灵活的JSON通用类...

xiahuawuyu
2012/07/24
0
0
Javascript数值转换(string,int,json)

数值: 在JavaScript中,数值转换一般有三种方式: 一、Number(param)函数:param可以用于任何数据类型 1.1 param是Boolean值,true和false分别转换为1和0; 1.2 param是数值,只是简单的传入...

easonjim
2016/12/27
0
0
scala字符串插入

scala的字符串插入,与java语言的有类似之处,都是最终用字符串变量去替代字符串中的。Scala中主要有,,三种字符串插值用法,另外还有一些高级用法,本文主要参考官网字符串插入。 s用法 f用法...

high_m
2017/11/05
0
0
JS字符串转换为JSON的四种方法笔记

1、jQuery插件支持的转换方式: 示例: $.parseJSON( jsonstr ); //jQuery.parseJSON(jsonstr),可以将json字符串转换成json对象 2、浏览器支持的转换方式(Firefox,chrome,opera,safari,i...

乌云上
2018/06/05
0
0
javascript 处理json字符串和json对象

1>jQuery插件支持的转换方式: 复制代码代码如下: $.parseJSON( jsonstr ); //jQuery.parseJSON(jsonstr),可以将json字符串转换成json对象 2>浏览器支持的转换方式(Firefox,chrome,opera,...

柒月-小妖精
2015/09/02
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Confluence 6 升级中的一些常见问题

升级的时候遇到了问题了吗? 如果你想尝试重新进行升级的话,你需要首先重新恢复老的备份。不要尝试再次对 Confluence 进行升级或者在升级失败后重新启动老的 Confluence。 在升级过程中的一...

honeymoose
今天
2
0
C++随笔(四)Nuget打包

首先把自己编译好的包全部准备到一个文件夹 像这样 接下来新建一个文本文档,后缀名叫.nuspec 填写内容 <?xml version="1.0"?><package xmlns="http://schemas.microsoft.com/packaging/201......

Pulsar-V
今天
2
0
再谈使用开源软件搭建数据分析平台

三年前,我写了这篇博客使用开源软件快速搭建数据分析平台, 当时收到了许多的反馈,有50个点赞和300+的收藏。到现在我还能收到一些关于dataplay2的问题。在过去的三年,开源社区和新技术的发...

naughty
今天
5
0
Python3的日期和时间

python 中处理日期时间数据通常使用datetime和time库 因为这两个库中的一些功能有些重复,所以,首先我们来比较一下这两个库的区别,这可以帮助我们在适当的情况下时候合适的库。 在Python文...

编程老陆
今天
2
0
分布式面试整理

并发和并行 并行是两个任务同时进行,而并发呢,则是一会做一个任务一会又切换做另一个任务。 临界区 临界区用来表示一种公共资源或者说是共享数据,可以被多个线程使用,但是每一次,只能有...

群星纪元
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部