閱讀574 返回首頁    go 阿裏雲 go 技術社區[雲棲]


JSON的操作與使用

JSON也就是JavaScript Object Notation,是一個描述數據的輕量級語法。JSON的優雅是因為它是JavaScript語言的一個子集。JSON和XML都使用結構化方法描述數據

JSON有結構化的嵌套數據元素,每個JSON文檔描述了這樣一個對象,該對象包含有:嵌套對象、數組、字符串、數字、布爾值或空值。

JSON 元素的添加刪除

創建對象的三種形式:

第一種:

var Person=new Object();
Person.name="Sun";
Person.age=24;

第二種:

var Person=new Object();
Person["name"]="Sun";
Person["age"]=24;

第三種:對象字麵量表達式

var Person={
    name: "Sun",
    age: 24
}

JSON 元素的添加刪除

javasscript刪除數組的3種方法

1,shift()方法

shift:刪除原數組第一項,並返回刪除元素的值;如果數組為空則返回undefined

var chaomao=[1,2,3,4,5]
var chaomao.shift()//得到1
alert(chaomao)//[2,3,4,5]

2,pop()方法

pop:刪除原數組最後一項,並返回刪除元素的值;如果數組為空則返回undefined

var chaomao=[1,2,3,4,5]
var chaomao.pop()//得到5
alert(chaomao)//[1,2,3,4]

前麵的方法隻能操作數組開頭和結尾,無法操作中間項,如果要操作中間的項,使用splice方法

3,splice方法

這個方法很強大,可以對數組任意項進行增加,刪除,替換操作

1)修改操作:

var chaomao=[1,2,3,4,5]
chaomao.splice(2,1,8,9)
alert(chaomao)//1,2,8,9,4,5

第一個參數是準備操作的數組位置,第二個參數是操作位置後麵的數組項數,第三個以後的就是被替換後的內容

2)刪除操作:

var chaomao=[1,2,3,4,5]
chaomao.splice(2,1)
alert(chaomao)//1,2,4,5

3)添加操作:

var chaomao=[1,2,3,4,5]
chaomao.splice(2,0,8,9)
alert(chaomao)//1,2,8,9,3,4,5

javasscript刪除對象的方法

js中刪除對象元素用delete操作符

var p ={
    "name": “chaomao”,
    "age":45,
    "sex":"male"
};
delete p.name
for(var i in p){
console.log(i);//輸出age,sex,name項已經被刪除了
}

添加json元素的方法

var json = {}; // 如果json已經定義就跳過
json[text] = value;
json.text2 = value2;  // 此時text2必須符合變量名標準,否則得使用數組方式賦值

JSON數據遍曆

JSON數據如:

{"options":
    "[
        {/"text/":/"王家灣/",/"value/":/"9/"},
        {/"text/":/"李家灣/",/"value/":/"10/"},
        {/"text/":/"邵家灣/",/"value/":/"13/"}
    ]",
    "[
        {/"text/":/"王家灣/",/"value/":/"8/"},
        {/"text/":/"李家灣/",/"value/":/"6/"},
        {/"text/":/"邵家灣/",/"value/":/"12/"}
    ]"
}

json數據的列循環for

var len = options.length;
for (var i = 0; i < len; i++){
    for (obj in options[i]){
        var obj2 = obj;
    }
}

JSON數據遍曆之for-in

object本身就是無對象的集合,因此在用 for-in 語句遍曆對象的屬性時,遍曆出的屬性順序與對象定義時不同,因此在開發中應盡量避免編寫依賴對象屬性順序的代碼

javascript數組遍曆for與for in區別詳解

var array = ['a']
for (var i = 1; i < array.length; i++) {//標準的for循環
    alert(array[i])
}
for (var i in array) {//forin循環
    alert(array[i])
}

正常情況下上麵兩種遍曆數組的方式結果一樣

區別:

1.標準的for循環中的i是number類型,表示的是數組的下標,但是forin循環中的i表示的是數組的key是string類型,因為js中一切皆為對象。自己試試 alert(typeof i)

2.現在我加上如下代碼,上麵的執行結果就不一樣了

Array.prototype.test=function(){}//擴展了js原生的Array

我們發現標準的for循環依然真正的對數組循環, 但是此時forin循環對我剛才寫的test方法打印出來了。這就是for與forin遍曆數組的最大區別,如果我們在項目采用的是用forin遍曆數組,假設有一天誰不小心自己為了擴展js原生的Array類,或者引入一個外部的js框架也擴展了原生Array。那問題就來了

再此建議兩點

1.不要用for in遍曆數組,全部統一采用標準的for循環變量數組(我們無法保證我們引入的js是否會采用prototype擴展原生的Array)

2.如果要對js的原生類擴展的時候,不要采用prototype了

JS遍曆Json字符串遍曆讀取鍵值對

for(var str in obj){ 
    alert(str+'='+obj[str]); 
}

直接在JS裏創建JSON數據然後遍曆使用

直接在JS裏創建JSON數據

var YearSelect = {}; 
var Year = 2014; 
var DateOption; 
for (var i = Year; i < Year + 12; i++) { 
DateOption = {'Year':i, 'Month':i-Year+1}; 
// alert(DateOption.Year) 
YearSelect[i] = DateOption; 
}

json對象沒有length屬性,所以遍曆的話要:

for(var key in YearSelect){ 
    alert(YearSelect[key].Year); 
    alert(YearSelect[key].Month); 
}

記住一定要分辨好json的對象和數組~不然就一直是undenfined

js 遍曆json返回的map內容示例代碼

JS不能直接遍曆Map,但是可以遍曆JSON對象,所以先將Map轉為JSON數據,再由JS去解析遍曆JSON對象,就達到了間接遍曆Map的目的

var proIdArray = new Array();
var proNameArray = new Array();
// Deal with the project names.  
var theProjectsObj = JSON.parse(result.data["projectIdsNames"]);
for (var proId in theProjectsObj) {
    proNameArray.push(theProjectsObj[proId]);
    proIdArray.push(proId);
}

最後更新:2017-05-17 12:32:29

  上一篇:go  域名投資——堅定不移走價值投資路線
  下一篇:go  MySQL數據恢複的九把瑞士軍刀