本篇文章主要介紹了JavaScript中js物件與JSON格式字串的相互轉換,具有一定的參考價值,有興趣的小夥伴們可以參考一下。
首先我們來看一下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.php.cn/
此外提一句使用這兩種方式轉換後的js對象,應該是「一個符合JSON資料格式的js物件」,也就是說它的屬性是帶著引號的,這只是我的一種猜測,因為如果JSON格式的字串如下表示:
var JSONStr1 = "{\"f[name]\" : \"张三\"}";
那麼轉換後的JS物件的屬性必定要加上引號,因為js物件的屬性不加引號只能使用字母,數字,下劃線和$符號表示,使用其它符號屬性就要加上引號了,所以說JS物件字面量表示法中屬性加上引號是不會錯的。 name]'] ,因為有特殊字符,這點要注意了。下面我準備了幾組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); }
看一下彈框的內容:
3) (4)
其中(1)、(3)、(4)的執行結果說明,JSON解析器的stringify()函數對於js物件是fou符合JSON格式是不加限定,都可以把js物件轉換成JSON格式字串。希望大家多多支援PHP中文網。