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。

相關文章
相關標籤/搜索