JS中JSON對(duì)象和String之間的互轉(zhuǎn)及處理技巧
JSON:JavaScript 對(duì)象表示法(JavaScript Object Notation),其實(shí)JSON就是一個(gè)JavaScript的對(duì)象(Object)而已。
如有不清楚JSON,可以去w3cschool了解http://www.w3school.com.cn/json/
1.在javascript中新建一個(gè)字符串(JSON文本)。
var txt = '{ "employees" : [' + '{ "firstName":"Bill" , "lastName":"Gates" },' + '{ "firstName":"George" , "lastName":"Bush" },' + '{ "firstName":"Thomas" , "lastName":"Carter" } ]}';
由于 JSON 語法是 JavaScript 語法的子集,JavaScript 函數(shù) eval() 可用于將 JSON 文本轉(zhuǎn)換為 JavaScript 對(duì)象。
eval() 函數(shù)使用的是 JavaScript 編譯器,可解析 JSON 文本,然后生成 JavaScript 對(duì)象。必須把文本包圍在括號(hào)中,這樣才能避免語法錯(cuò)誤:
var obj = eval ("(" + txt + ")");
注意:eval() 函數(shù)可編譯并執(zhí)行任何 JavaScript 代碼。這隱藏了一個(gè)潛在的安全問題。
使用 JSON 解析器將 JSON 轉(zhuǎn)換為 JavaScript 對(duì)象是更安全的做法。JSON 解析器只能識(shí)別 JSON 文本,而不會(huì)編譯腳本。
在瀏覽器中,這提供了原生的 JSON 支持,而且 JSON 解析器的速度更快。
較新的瀏覽器和最新的 ECMAScript (JavaScript) 標(biāo)準(zhǔn)中均包含了原生的對(duì) JSON 的支持。
字符串轉(zhuǎn)json對(duì)象:JSON.parse(jsonstr);
json對(duì)象轉(zhuǎn)json字符串:JSON.stringify(jsonObj);
JQuery方法:
json字符串轉(zhuǎn)json對(duì)象:jQuery.parseJSON(jsonStr);
<html> <body> <h2>通過 JSON 字符串來創(chuàng)建對(duì)象</h3> <p> First Name: <span id="fname"></span><br /> Last Name: <span id="lname"></span><br /> </p> <script type="text/javascript"> var txt = '{"employees":[' + '{"firstName":"Bill","lastName":"Gates" },' + '{"firstName":"George","lastName":"Bush" },' + '{"firstName":"Thomas","lastName":"Carter" }]}'; obj = JSON.parse(txt); document.getElementById("fname").innerHTML=obj.employees[1].firstName document.getElementById("lname").innerHTML=obj.employees[1].lastName </script> </body> </html>
2.那么如何遍歷json數(shù)組呢?可以把它當(dāng)成一個(gè)普通的javascript對(duì)象來處理。
<html> <body> <h2>如何遍歷JSON數(shù)組</h3> <div id="result"></div> <script type="text/javascript"> var txt = '[{"firstName":"Bill","lastName":"Gates" },' + '{"firstName":"George","lastName":"Bush" },' + '{"firstName":"Thomas","lastName":"Carter" }]'; var arrayJson = JSON.parse(txt); var html=''; for(var p in arrayJson){ html+=' firstName:'+arrayJson[p].firstName; html+=' lastName'+arrayJson[p].lastName; html+='<br />'; } document.getElementById("result").innerHTML= html; </script> </body> </html>
ie8(兼容模式),ie7和ie6沒有JSON對(duì)象,不過http://www.json.org/js.html提 供了一個(gè)json.js,這樣ie8(兼容模式),ie7和ie6就可以支持JSON對(duì)象以及其stringify()和parse()方法;你可以在 https://github.com/douglascrockford/JSON-js上獲取到這個(gè)js,一般現(xiàn)在用json2.js。
ie8(兼容模式),ie7和ie6可以使用eval()將字符串轉(zhuǎn)為JSON對(duì)象,
var c='{"name":"Mike","sex":"女","age":"29"}'; var cToObj=eval("("+c+")"); alert(typeof(cToObj));
以上內(nèi)容是針對(duì)JS中JSON對(duì)象和String之間的互轉(zhuǎn)及處理技巧,希望對(duì)大家有所幫助。接下來給大家補(bǔ)充點(diǎn)知識(shí)JavaScript中String和JSON之間的轉(zhuǎn)換。
下面給大家介紹w3c標(biāo)準(zhǔn)的瀏覽器(如火狐、chrome等)是有一個(gè)對(duì)象JSON(注意是大寫)專門用來處理json的。這個(gè)對(duì)象有兩個(gè)函數(shù):
JSON.parse(text) //用于解析json;
JSON.stringify(object) //用于生成json格式;
早期的IE版本沒有這個(gè)對(duì)象,可以去json的官方網(wǎng)站自行下載json2.js對(duì)付早期IE版本http://www.JSON.org
下面是之前的一些方法,現(xiàn)在可以棄用了
1.舊方法
function strToJson(str){ var json = eval('(' + str + ')'); return json; }
2.常用
function strToJson(str){ return (new Function("return " + str))(); }
3.IE不支持的方法
function strToJson(str){ return JSON.parse(str); }
4.jQuery方法
parseJSON: function( data ) { if ( typeof data !== "string" || !data ) { return null; } data = jQuery.trim( data ); if ( /^[\],:{}\s]*$/.test(data.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, "@") .replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, "]") .replace(/(?:^|:|,)(?:\s*\[)+/g, "")) ) { return window.JSON && window.JSON.parse ? window.JSON.parse( data ) : (new Function("return " + data))(); } else { jQuery.error( "Invalid JSON: " + data ); } },
相關(guān)文章
JS控制div跳轉(zhuǎn)到指定的位置的幾種解決方案總結(jié)
這篇文章主要介紹了JS控制div跳轉(zhuǎn)到指定的位置的幾種解決方案總結(jié),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。2016-11-11解決js相同的正則多次調(diào)用test()返回的值卻不同的問題
今天小編就為大家分享一篇解決js相同的正則多次調(diào)用test()返回的值卻不同的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-10-10用js模擬JQuery的show與hide動(dòng)畫函數(shù)代碼
用javascript實(shí)現(xiàn)的模擬jquery下的顯示與隱藏的動(dòng)畫效果,學(xué)習(xí)的朋友可以參考下。2010-09-09JavaScript讓網(wǎng)頁出現(xiàn)漸隱漸顯背景顏色的方法
這篇文章主要介紹了JavaScript讓網(wǎng)頁出現(xiàn)漸隱漸顯背景顏色的方法,涉及javascript操作樣式的相關(guān)技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2015-04-04ionic2 tabs 圖標(biāo)自定義實(shí)例
這篇文章主要介紹了ionic2 tabs 圖標(biāo)自定義,需要的朋友可以參考下2017-03-03