Json字符串和Json對象相互轉化


在數據傳輸過程中,json是以文本,即字符串的形式傳遞的,而js操作的是JSON對象,所以JSON對象和JSON字符串之間的相互轉換是關鍵

例如:

JSON字符串:    var str = '{ "name": "name1","sex": "m" }';

JSON對象:      var obj = { "name": "name1", "sex": "w" };

一、JSON字符串轉換為JSON對象

要使用上面的str,必須使用下面的方法先轉化為JSON對象:

       var obj = eval('(' + str + ')');     //由JSON字符串轉換為JSON對象,必須把文本包圍在括號中,這樣才能避免語法錯誤: "("  + str+  ")"

或者 var obj = $.parseJSON(str);      // 將JSON字符串轉化為JSON對象  (jQuery)

或者 var obj= str.parseJSON();       //由JSON字符串轉換為JSON對象

或者 var obj= JSON.parse(str);       //由JSON字符串轉換為JSON對象

可以這樣讀取:

console.log(obj.name);

console.log(obj.sex);

特別注意:如果obj本來就是一個JSON對象,那么使用eval()函數轉換后(哪怕是多次轉換)還是JSON對象,但是使用parseJSON()函數處理后會有問題(拋出語法異常)。

二、可以使用toJSONString()或者全局方法JSON.stringify()將JSON對象轉化為JSON字符串。

例如:var str=obj.toJSONString(); //將JSON對象轉化為JSON字符

或者  var str=JSON.stringify(obj); //將JSON對象轉化為JSON字符

總結:

    上面我們也看到了在進行類型轉化的時候總的來說有兩種,一種是JavaScript自帶的解析器,而另一種就是JSON解析器,其中javascript解析器可以編譯執行任何的javascript代碼所以這里隱藏了一個潛在的安全問題而JSON解析器只能識別JSON文本,而不會編譯腳本所以比較安全,而且JSON解析器的速度更快。

    上面的幾個方法中,除了eval()函數是js自帶的之外,其他的幾個方法都來自json.js包。新版本的JSON 修改了 API,將 JSON.stringify() 和 JSON.parse() 兩個方法都注入到了 Javascript的內建對象里面,前者變成了 Object.toJSONString(),而后者變成了String.parseJSON()。如果提示找不到toJSONString()和parseJSON()方法,則說明您的json包版本太低。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM