背景
JavaScript对象与Json对象的关系,Json是JavaScript的一个子集。JavaScript的对象是面向对象语言的一种表示方式,Json则是数据传输的一种格式(比如XML),所以二者之间在定义上没有很大关系;但是二者的格式书写非常相似(有一个细节就是:JS对象的key是可以使用引号也可以不使用;可是Json格式则必须对key使用引号),所以JS对象与Json非常容易转换,不过一定要记住,在JavaScript语言中Json只是一种符合固定格式的字符串,只是字符串!
1 使用Javascript 自带的 eval 方法,把JSON字符串转为Javascript对象
var obj = eval(‘(‘+jsonStr +‘)‘);
对于为什么要采用括号,是因为小括号把JSON字符串最外层的花括号强制定义为对象直接量的语义,因为Javascript中的花括号语义颇多,所以这是一个不错的方法。相比之下,我们采用(function(){})()这里的小括号是把花括号理解为函数的定义,所以这个函数才会执行
2 使用高级浏览器自带解析机制
在Firefox,chrome,opera,safari,ie9,ie8等高级浏览器直接可以用JSON对象的stringify()和parse()方法。
JSON.stringify(obj)将JSON转为字符串。
JSON.parse(string)将字符串转为JSON格式;
3 jQuery 所支持Json方法
var obj = jQuery.parseJSON(‘{"name":"John"}‘);
4 ExtJs 所支持JSON方法
var jsonStr = Ext.util.JSON.encode(obj);
var obj = Ext.util.JSON.decode(jsonStr);
此外,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。