javascript中json的用法整理
阿新 • • 發佈:2018-12-10
1、javascript中將字串轉換成json物件,需要用到jquery.js
<script type="text/javascript" src="jquery-1.8.1.js"></script> <script> var jsonStr1="{\"code\":\"001\",\"name\":\"hello1\"}"; var jsonStr2="[{\"code\":\"002\",\"name\":\"hello2\"}]"; var jsonStr3="[{\"code\":\"003\",\"name\":\"hello3\"},{\"code\":\"004\",\"name\":\"hello4\"}]"; //第一種寫法,從jQuery 3.0開始,不推薦使用$.parseJSON。 要解析JSON字串,請改用原生的 JSON.parse 方法。 var jsonObj1=$.parseJSON(jsonStr1); var jsonObj2=$.parseJSON(jsonStr2); var jsonObj3=$.parseJSON(jsonStr3); //第二種寫法 //var jsonObj1=JSON.parse(jsonStr1); //var jsonObj2=JSON.parse(jsonStr2); //var jsonObj3=JSON.parse(jsonStr3); //第三種寫法 //var jsonObj1=eval('(' + jsonStr1 + ')'); //var jsonObj2=eval('(' + jsonStr2 + ')'); //var jsonObj3=eval('(' + jsonStr3 + ')'); alert(jsonObj1.name); alert(jsonObj2[0].name); alert(jsonObj3[1].name); </script>
傳入格式有誤的 JSON 字串可能導致丟擲異常。例如,下面這些無效的 JSON 字串:
{test: 1} (test 沒有使用雙引號包裹).
{'test': 1} ('test' 用了單引號而不是雙引號包裹).
"{test: 1}" (test 沒有使用雙引號包裹).
"{'test': 1}" ('test' 用了單引號而不是雙引號包裹).
"'test'" ('test' 用單引號代替雙引號).
".1" (number 必須以數字開頭; "0.1" 將是有效的).
"undefined" (undefined 不能表示一個 JSON 字串; 然而null,可以).
"NaN" (NaN 不能表示一個 JSON 字串; 用Infinity直接表示無限也是不允許的).
2、json物件轉換成字串
<script>
var obj=new Object();
obj.code="001";
obj.name="hello1";
var str=JSON.stringify(obj);
alert(str);
</script>
3、獲取json物件條目數量,正常情況下可以使用obj.length來獲取數量,如果想獲取物件元素數量,可以使用下面方法
<script> function getJsonObjLength(jsonObj) { var Length = 0; for (var item in jsonObj) { Length++; } return Length; } </script>
4、迴圈操作json
<script>
var myObj = { "code":"001", "name":"hello1" };
//使用 for-in 來迴圈物件的屬性
for (x in myObj) {
alert(x);
}
//在 for-in 迴圈物件的屬性時,使用中括號([])來訪問屬性的值
for (x in myObj) {
alert(myObj[x]);
}
</script>
5、刪除JSON物件的屬性
<script>
var myObj, i, x = "";
myObj = {
"name":"hello1",
"alexa":10000,
"sites": {
"site1":"123",
"site2":"456",
"site3":"789"
}
}
//使用 delete 關鍵字來刪除 JSON 物件的屬性
delete myObj.sites.site1;
//使用中括號([])來刪除 JSON 物件的屬性:
delete myObj.sites["site2"];
for (i in myObj.sites) {
x += myObj.sites[i] + "#";
}
alert(x);
</script>