1. 程式人生 > >javascript中json的用法整理

javascript中json的用法整理

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>