亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

javascript解析json格式的數(shù)據(jù)方法詳解

 更新時間:2020年08月07日 11:55:20   作者:Sharember  
這篇文章主要介紹了javascript解析json格式的數(shù)據(jù)方法詳解,文章通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

JSON (JavaScript Object Notation)是一種簡單的數(shù)據(jù)格式,比xml更輕巧。 它是 JavaScript 原生格式,這意味著在 JavaScript 中處理 JSON 數(shù)據(jù)不需要任何特殊的 API 或工具包。那么如何用JavaScript來解析json呢?

首先,科普一下json。在json中,有兩種結(jié)構(gòu):對象和數(shù)組。

一個對象以“{”(左括號)開始,“}”(右括號)結(jié)束。每個“名稱”后跟一個“:”(冒號);“‘名稱/值' 對”之間運用 “,”(逗號)分隔。 名稱用引號括起來;值如果是字符串則必須用括號,數(shù)值型則不須要。例如:
var o={“key”:”value”};
數(shù)組是值(value)的有序集合。一個數(shù)組以“[”(左中括號)開始,“]”(右中括號)結(jié)束。值之間運用 “,”(逗號)分隔。
var array = [{“name”:”tom”},{“name”:”jake”}];
在數(shù)據(jù)傳輸流程中,json是以字符串的形式傳遞的,而JS操作的是JSON對象,所以,JSON對象和JSON字符串之間的相互轉(zhuǎn)換是關(guān)鍵。
json字符串:var str='{“key”:”value”}';
json對象:var o={“key”:”value”};

1. json字符串轉(zhuǎn)化為json對象

可以通過JavaScript的eval()函數(shù)來進(jìn)行解析,代碼如下:

<script type="text/javascript">
  var json = '{"key":"value","jian":"zhi"}';
  var obj = eval("(" + json + ")");

  console.log(obj);     //控制臺返回 Object
  console.log(obj.key);   //控制臺返回 value
  console.log(obj.jian);  //控制臺返回 zhi

</script>

或者通過JSON.parse()方法來解析,代碼如下:

var json = '{"key":"value","jian":"zhi"}';
var obj =JSON.parse(json);

console.log(obj);     //控制臺返回 Object
console.log(obj.key);   //控制臺返回 value
console.log(obj.jian);  //控制臺返回 zhi

既然這兩種方法都可以解析json字符串,那么我們究竟使用哪種呢?在這之前,我們先來做一個測試:

var value = 1;
var jsonstr = '{"name":"jifeng","company":"taobao","value":++value}';
var json1 = eval('('+jsonstr+')');
console.log(json1);         //控制臺返回 Object
console.log('value: '+ value);    //控制臺返回 value 2

我的天,evel方法竟然會執(zhí)行json字符串里的代碼??!

我們再看一下JSON.parse()方法:

var value = 1;
var jsonstr = '{"name":"jifeng","company":"taobao","value":++value}';

var json2 = JSON.parse(jsonstr);
console.log(json2);
console.log('value: '+ value);     
 //控制臺報錯Unexpected token + in JSON at position

現(xiàn)在知道怎么選擇了吧。

eval()方法是極其不安全的,尤其是在解析第三方數(shù)據(jù)的時候,萬一第三方數(shù)據(jù)給你加點惡意代碼什么的你不就完了么?所以,JSON.parse()才是正確的選擇,當(dāng)然,有些瀏覽器不支持這個方法,
可以到https://github.com/douglascrockford/JSON-js/blob/master/json2.js 下載json2.js,添加到你的hlml中就可以了。

除此之外還有一個 jsonStr.parseJSON()的方法,也可以將json字符串轉(zhuǎn)化為json對象,同樣需要json2.js包的支持。

2.json對象轉(zhuǎn)化為json字符串

話不多說,先看代碼:

var json = '{"key":"value","jian":"zhi"}';
var obj =JSON.parse(json);

var str=JSON.stringify(obj);
console.log(str);    
//控制臺返回 {"key":"value","jian":"zhi"}

這里我們用到了和JSON.parse(str) 相對應(yīng)的方法JSON.stringify(obj)。

同樣,還有一個方法叫做obj.toJSONString()也可以將json對象轉(zhuǎn)化為json字符串,與 jsonStr.parseJSON()相對應(yīng)。

3.json字符數(shù)組轉(zhuǎn)化為json數(shù)組

這個轉(zhuǎn)化和字符串轉(zhuǎn)對象是一樣的,只是操作json數(shù)組的方式與操作json對象的方式稍有不同而已??匆欢未a:

var arrayStr = '[{"name":"tom","age":"18"},{"name":"jake","age":"20"}]';
var arrayObj =JSON.parse(arrayStr);

console.log(arrayObj);     //控制臺返回 Array[2]
console.log(arrayObj[0]);   //控制臺返回 Object
console.log(arrayObj[0].name); //控制臺返回 tom
console.log(arrayObj[1].age); //控制臺返回 20

對于json數(shù)組,可以通過下標(biāo)來進(jìn)行訪問。由于它是一個數(shù)組,所以也可以通過for循環(huán)進(jìn)行遍歷。

4.jquery解析json字符串

簡單地提一下jquery。在使用jquery的ajax功能時,有一個dataType屬性,可以將這個屬性設(shè)置為json或者利用$.getJSON()方法獲得服務(wù)器返回的值,這個返回值就是一個json對象,所以就不需要再做轉(zhuǎn)化。

當(dāng)然,jquery也提供了轉(zhuǎn)換的函數(shù) $.parseJSON(string); 這個和之前講的JSON.parse()得用法是一樣的,具體怎么使用,看個人喜好。

到此這篇關(guān)于javascript解析json格式的數(shù)據(jù)方法詳解的文章就介紹到這了,更多相關(guān)javascript解析json格式的數(shù)據(jù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • SWFObject Flash js調(diào)用類

    SWFObject Flash js調(diào)用類

    一直想為 SWFObject 這個JS的類庫寫一個推薦帖,因為他輕便,同時功能強(qiáng)大,為我們的開發(fā)帶來了很大的便捷。
    2008-07-07
  • JavaScript中的apply()方法和call()方法使用介紹

    JavaScript中的apply()方法和call()方法使用介紹

    我們發(fā)現(xiàn)apply()和call()的真正用武之地是能夠擴(kuò)充函數(shù)賴以運行的作用域,如果我們想用傳統(tǒng)的方法實現(xiàn)
    2012-07-07
  • 用幾道面試題來看JavaScript執(zhí)行機(jī)制

    用幾道面試題來看JavaScript執(zhí)行機(jī)制

    這篇文章主要介紹了JavaScript的執(zhí)行機(jī)制,對此感興趣的同學(xué),可以參考下
    2021-04-04
  • js獲取對象的屬性值兩種方式

    js獲取對象的屬性值兩種方式

    這篇文章主要介紹了js獲取對象的屬性值兩種方式,在JavaScript中訪問對象的屬性值可以通過點運算符(.)或括號運算符([])兩種方式,文中將兩種方式的代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-10-10
  • JavaScript簡寫技巧總結(jié)

    JavaScript簡寫技巧總結(jié)

    這篇文章總結(jié)了JavaScript的一些簡寫技巧,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-06-06
  • cropper.js和exif.js實現(xiàn)頭像上傳縮放裁剪旋轉(zhuǎn)

    cropper.js和exif.js實現(xiàn)頭像上傳縮放裁剪旋轉(zhuǎn)

    這篇文章主要為大家詳細(xì)介紹了cropper.js和exif.js實現(xiàn)頭像上傳縮放裁剪旋轉(zhuǎn),文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • JavaScript函數(shù)的定義和基本使用方法

    JavaScript函數(shù)的定義和基本使用方法

    函數(shù)就是一種封裝,由事件驅(qū)動的或者當(dāng)它被調(diào)用時執(zhí)行的可重復(fù)使用的代碼塊,下面這篇文章主要給大家介紹了關(guān)于JavaScript函數(shù)的定義和基本使用方法的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-06-06
  • js實現(xiàn)非常棒的彈出div

    js實現(xiàn)非常棒的彈出div

    這篇文章主要為大家詳細(xì)介紹了js實現(xiàn)非常棒的彈出div,具有一定的參考價值,感興趣的朋友可以參考一下
    2016-10-10
  • JS實現(xiàn)重新加載當(dāng)前頁面或者父頁面的幾種方法

    JS實現(xiàn)重新加載當(dāng)前頁面或者父頁面的幾種方法

    本文介紹了JS實現(xiàn)重新加載當(dāng)前頁面或者父頁面的幾種方法.需要的朋友可以參考下
    2016-11-11
  • JavaScript跳出循環(huán)的三種方法(break, return, continue)

    JavaScript跳出循環(huán)的三種方法(break, return, continue)

    這篇文章主要介紹了JavaScript跳出循環(huán)的三種方法(break, return, continue),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07

最新評論