Json 与 JS对象的关系与转换

本秂侑毒 提交于 2019-12-02 01:01:53

背景

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。


易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!