JSON(二)——JavaScript中js對象與JSON格式字串的相互轉換

來源:互聯網
上載者:User

標籤:js數組   code   undefined   name   ring   注意   character   define   rac   

首先我們來看一下js中JSON格式的字串

var JSONStr1 = "{\"name\" : \"張三\"}";

注意以下的寫法不是js中JSON格式的字串,它只是一個js的字串。

var JSONStr2 = "{‘name‘ : ‘張三‘}";

我們看JSON文法中對於字串的定義:是由雙引號包圍的任意數量Unicode字元的集合,使用反斜線轉義。一個字元(character)即一個單獨的字串(character string)。

下面我們來看一下在js中怎麼把JSON格式的字串轉換成一個JS對象。(

var jsObj3 = eval("(" + JSONStr1 + ")");var jsObj4 = JSON.parse(JSONStr1);

推薦使用第二種方式具體原因請參看:http://www.json.org.cn/resource/json-in-javascript.htm

  此外提一句使用這兩種方式轉換後的js對象,應該是“一個符合JSON資料格式的js對象”,也就是說它的屬性是帶著引號的,這隻是我的一種猜測,因為如果JSON格式的字串如下表示:

var JSONStr1 = "{\"f[name]\" : \"張三\"}";

  那麼轉換後的JS對象的屬性必定要加上引號,因為js對象的屬性不加引號只能使用字母,數字,底線和$符號表示,使用其它符號屬性就要加上引號了,所以說JS對象字面量標記法中屬性加上引號是不會錯的。另外如果JSON格式的字串如上所示,那麼轉換後的js對象對f[name]取值就不能使用 jsObj4.f[name] 要用 jsObj4[‘f[name]‘] ,因為有特殊字元,這點要注意了。對於我的猜測,讀者要有異議,可以提給我。

我們再來看看在js中js對象與JSON格式字串的轉換。下面我準備了幾組js對象加以說明:

<input type="button" value="測試按鈕1" onclick="testJson();"/>
<script type="text/javascript">    //(1) 這是一個js對象    var jsObj1 = {        name : "張三"    }    //(2)這是一個內部帶有方法js對象。    var jsObj2 = {        name : "張三",        func : function(){            alert("hello");        }    }    //(3)這是一個符合JSON資料格式的js對象    var jsonObj = {        "name" : "張三",        "age" : 10,        "remark" : {"high" :170,"address" : "beijingshi"}    }    // js數組對象    var jsArray = [        {name : "張三"},        {"age" : 10}    ]    function testJson(){        var JSONstr1 = JSON.stringify(jsObj1);        var JSONstr2 = JSON.stringify(jsObj2);        var JSONstr3 = JSON.stringify(jsonObj);        var JSONstr4 = JSON.stringify(jsArray);        alert(JSONstr1);        alert(JSONstr2);        alert(JSONstr3);        alert(JSONstr4);    }

看一下彈框的內容:

(1)                (2)                                       (3)                       (4)

                    

 

其中 (1)、(3)、(4)的執行結果說明,JSON解析器的stringify()函數對於js對象是fou符合JSON格式是不加限定,都可以把js對象轉換成JSON格式字串。

(2)的執行結果說明,js對象中如果沒有JSON表示的值(比如函數和undefined)將會被排除。

 

參考文章:

    http://www.json.org.cn/resource/json-in-javascript.htm

 

  最後說一點,我們作為程式員,研究問題還是要仔細深入一點的。當你對原理瞭解的有夠透徹,開發起來也就得心應手了,很多開發中的問題和疑惑也就迎刃而解了,而且在面對其他問題的時候也可做到觸類旁通。當然在開發中沒有太多的時間讓你去研究原理,開發中要以實現功能為前提,可等項目上線的後,你有大把的時間或者空餘的時間,你大可去刨根問底,深入的去研究一項技術,為覺得這對一名程式員的成長是很重要的事情。

  

  

 

JSON(二)——JavaScript中js對象與JSON格式字串的相互轉換

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.