Json 与 JS对象的关系与转换

背景

JavaScript对象与Json对象的关系,Json是JavaScript的一个子集。JavaScript的对象是面向对象语言的一种表示方式,Json则是数据传输的一种格式(好比XML),因此两者之间在定义上没有很大关系;可是两者的格式书写很是类似(有一个细节就是:JS对象的key是能够使用引号也能够不使用;但是Json格式则必须对key使用引号),因此JS对象与Json很是容易转换,不过必定要记住,在JavaScript语言中Json只是一种符合固定格式的字符串,只是字符串!chrome


1 使用Javascript 自带的 eval 方法,把JSON字符串转为Javascript对象

 var obj = eval('('+jsonStr +')');json

对于为何要采用括号,是由于小括号把JSON字符串最外层的花括号强制定义为对象直接量的语义,由于Javascript中的花括号语义颇多,因此这是一个不错的方法。相比之下,咱们采用(function(){})()这里的小括号是把花括号理解为函数的定义,因此这个函数才会执行浏览器


2 使用高级浏览器自带解析机制

在Firefox,chrome,opera,safari,ie9,ie8等高级浏览器直接能够用JSON对象的stringify()和parse()方法。函数

JSON.stringify(obj)将JSON转为字符串。spa

JSON.parse(string)将字符串转为JSON格式;code


3 jQuery 所支持Json方法

var obj = jQuery.parseJSON('{"name":"John"}');对象

4 ExtJs 所支持JSON方法

var jsonStr = Ext.util.JSON.encode(obj);ip

var obj = Ext.util.JSON.decode(jsonStr);ci

此外,encode和decode分别赋值给了Ext.encode和Ext.decode。开发

即开发时能够使用更简短的Ext.encode和Ext.decode而非冗长的Ext.util.JSON.encode和Ext.util.JSON.decode。

1 Ext.encode = Ext.util.JSON.encode;

2 Ext.decode = Ext.util.JSON.decode; 

即开发时能够使用更简短的Ext.encode和Ext.decode而非冗长的Ext.util.JSON.encode和Ext.util.JSON.decode。

相关文章
相关标签/搜索