js JSON對象屬性

json對象是是一種用於原生json分析的對象,沒法對其進行構造函數調用,用java術語 來講,它至關於可以直接使用類方法的工具類
JSON對象的屬性
parse(text[,reviver]);
對參數text這一json字符串分析以後 返回一個javascript對象. reviver將會對每一個屬性調用回調函數,並將返回值賦爲屬性值
對於reviver函數
reviver(key,val){}
對javascript返回的對象每個屬性調用函數,注意對對象自己也進行一次調用,沒有key值,在最後一次,val是對象自己
若是 reviver 返回一個有效值,則成員值將替換爲轉換後的值
若是 reviver 返回它接收的相同值,則不修改爲員值
若是 reviver 返回 null 或 undefined,則刪除成員
見下面代碼javascript

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>json</title>
</head>
<body>
<script>
//json字符串轉換爲對象
var s='{"x":1,"y":2,"a":"ajax"}';
////鍵,值 不能夠用單引號包裹 或者屬性名不是字符串時   會解析錯誤
//var s1="{'x':1,'y':2,a:'ajax'}";     2處錯誤     解析出錯
var json_s=JSON.parse(s);
for(var i in json_s){
    console.log(i+":"+json_s[i]);
}
var s1=JSON.stringify(json_s);
console.log(s1);
/*
x:1
y:2
a:ajax
{"x":1,"y":2,"a":"ajax"}
*/
//json字符串數組轉換爲對象的數組
var arr=JSON.parse("[1,3,5]");
var arr1=JSON.parse('["a","c","b"]');
//鍵,值 不能夠用單引號包裹 否者解析錯誤
console.log(arr); //[1, 3, 5]
console.log(arr1);//["a", "c", "b"]
console.log(Array.isArray(arr));  //true

//將字符串型的json轉換爲字符串值
var f=JSON.parse('"for"');
console.log(f);//for
console.log(typeof f);//string

var s='{"x":1,"y":2,"a":3,"p":"php"}';
function reviver(key,val){
    if(key){
        if(!isNaN(val)) {
            return val+1;
        }else{return val.toLocaleUpperCase()}
    }else{ //注意此處 是對對象自己的調用 key爲空,val是對象自己,必定要返回對象自己
         return val;
    }
}
var sobj2=JSON.parse(s,reviver);
console.log(sobj2); //Object {x: 2, y: 3, a: 4, p: "PHP"}
</script>
</body>
</html>

stringify(value[,replacer[,space]])
將參數value轉換爲json字符串,replacer會對每一個屬性調用回調函數,並將返回值賦爲屬性值,space是輸出時的一個縮進字符串php

<script>
var students = new Array() ; 
students[0] = "jim"; 
students[1] = "tom"; 
students[2] = "lily"; 
var json = JSON.stringify(students,switchUpper); 
function switchUpper(key, value) { 
    return value.toString().toUpperCase(); 
} 
console.log(json);//"JIM,TOM,LILY"
</script>
相關文章
相關標籤/搜索