1. 程式人生 > >JavaScript對JSON的操作總結

JavaScript對JSON的操作總結

JSON物件輸出:var jsonStr = JSON.stringify( obj );

字串轉JSON:

  var bToObj=JSON.parse(b);
  jQuery.parseJSON(json);
  
  var c='{"name":"Mike","sex":"女","age":"29"}';
  var jsonObj=eval("("+c+")");

示例
	$.post("/trade/pay/vesta/firstPaymentMobilePwd.do", {
    				"TermSsn"		: orderNo,
	    			"PayBank"		: bankCode,
	    			"AccountType" 	: accountType,
	    			"AccountNo" 	: accountNo,
	    			"ValidateDate" 	: validateDate,
	    			"EncodeData" 	: encodeData,
	    			"PayCardName"	: encodeURI(payCardName),
    				"IdNo"			: idNo,
    				"MobileNo" 		: mobileNo
    				
    			}, function(data){
    				if(data.code == 0){
    					
    				}else{
    					alert(data.errorDescription);
    				}
    				console.info("data loaded: "+data);
    				console.info(JSON.stringify(data));
			},"json");

一、概述

JSON(JavaScript Object Notation) 是一種輕量級的資料交換格式,採用完全獨立於語言的文字格式,是理想的資料交換格式。同時,JSON是 JavaScript 原生格式,這意味著在 JavaScript 中處理 JSON資料不須要任何特殊的 API 或工具包。

 在JSON中,有兩種結構:物件和陣列。

1.物件

一個物件以“{”開始,“}”結束。每個“key”後跟一“:”,“‘key/value’ 對”之間運用 “,”分隔。

packJson = {"name":"nikita", "password":"1111"}

2.陣列

packJson = [{"name":"nikita", "password":"1111"}, {"name":"tony", "password":"2222"}];

陣列是值的有序集合。一個數組以“[”開始,“]”結束。值之間運用 “,”分隔。

二、JSON物件和JSON字串的轉換

在資料傳輸流程中,json是以文字,即字串的形式傳遞的,而JS操作的是JSON物件,所以,JSON物件和JSON字串之間的相互轉換是關鍵。例如:

JSON字串:

var jsonStr = '{"name":"nikita", "password":"1111"}';

JSON物件:

var jsonObj = {"name":"nikita", "password":"1111"};

2、String轉換為Json

var myObject = eval('(' + myJSONtext + ')'); 

eval是js自帶的函式,不是很安全,可以考慮用json包。

三、遍歷JSON物件

複製程式碼 複製程式碼
myJson = {"name":"nikita", "password":"1111"};

for(var p in myJson){//遍歷json物件的每個key/value對,p為key

   alert(p + " " + myJson[p]);

}
複製程式碼

執行結果:

四、遍歷JSON陣列

複製程式碼 複製程式碼
packJson = [

{"name":"nikita", "password":"1111"},

{"name":"tony", "password":"2222"}

];

for(var p in packJson){//遍歷json陣列時,這麼寫p為索引,0,1

   alert(packJson[p].name + " " + packJson[p].password);

}
複製程式碼 複製程式碼

我更傾向於這種寫法:

for(var i = 0; i < packJson.length; i++){

   alert(packJson[i].name + " " + packJson[i].password);

}

執行結果:

 

 五、將兩個JSON物件組裝到一個裡面

複製程式碼 複製程式碼
//targetJson 目標JSON,packJson 被組裝JSON

function addGroupJson(targetJson, packJson){

    if(targetJson && packJson){

       for(var p in packJson){

           targetJson[p] = packJson[p];

       }

    }

}
複製程式碼 複製程式碼

用法如下:

var json1 = {"name":"nikita"};
var json2 = {"password":"1111"};
addGroupJson(json1, json2);
alert(json2str(json1));

執行結果: