js中 json詳解


json的語法可以表示以下三種類型的值。

1、簡單值:可以在json中表示字符串、數值、布爾和null。

2、對象:對象作為一種復雜的數據類型,表示一組有序的鍵值對兒。

3、數組:數組也是一種復雜的數據類型,表示一組有序的值列表,可以通過數值索引來訪問其中的值。

json不支持變量、函數或對象實例,它就是一種表示結構化數據的格式。

1.1:簡單值:

如下10,“aa”,json字符串與js字符串最大的區別是json字符串必須使用雙引號布爾與null也是有效的json形式。

2.1:對象

對象字面量一般寫法是:

var aa ={
     name:"zoumm",
    job :"it",
    age :25
  
};

  json對象一般這樣寫的:

   {
    "name":"zoumm",
    "job":"it",
    "age":23,
"school":{

"name":"大學名",
“add”:"中國"
}
}

他們的區別是,json對象不用定義變量,末尾不用寫分號,切所有的屬性名必須加雙引號;

3.1:數組

一般數組是這樣定義的:

  var  aa = [23,"zoumm"];

json數組是這樣定義的

   [ 23,"zoumm" ]

他們的區別是,json數組不用定義變量,末尾不用寫分號;

在Jquery中實現ajax用post請求后台json數據時,返回了一個html,而不是想要的Json數據,這個問題郁悶了一上午,在網上查的方法一沒用。最后終於發現是因為在service方法中引用了“super.service();” 這句話。去掉就解決了。

  下面進入正題:js中如何操作json數據。

一、要想熟練的操作json數據,就先要了解json數據的結構,json有兩種結構:對象和數組。

  1、對象 一個對象以“{”開始,“}”結束。每個“名稱”后跟一個“:”;“‘名稱/值’ 對”之間使用“,”分隔。 名稱用引號括起來;值如果是字符串則必須用括號,數值型則不需要。例如:  var jsonObj={"str":"abc","intstr":1322323456,"max":6753,"time":"2012-10-19"};

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

    例如:var jsonList=[{"str":"abc","intstr":1322323456,"max":6753,"time":"2012-10-19"},                           {"str":"cde","intstr":782144556,"max":15400,"time":"2012-10-19"}];

二、JSON(JavaScript Object Notation) 是一種輕量級的數據交換格式,采用完全獨立於語言的文本格式,是理想的數據交換格式。json在傳輸過程中是以文本形式存在的,即字符串的形式。而在JS中需要操作的是對象,所以需要把json轉換成對象,一般用“eval()”函數來實現,例如 :var obj = eval('(' + json+ ')'); 這樣就可以隨意操作json了。

三、如果不知道jsonlist對象里的key和value怎樣來獲得其中的數據?

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

     for(var key in jsonList[i]){

           alert("key:"+key+",value:"+jsonList[i][key]); 

             } 

   } 

用這種方法就可以解析json數據了。

json解析與序列化

1:json對象

 json對象有兩個方法stringify和parse,他們分別是把js對象序列化成json字符串,和把json字符串解析成原生js值,例如:

 var  aa ={
        name:"zoumm",
        age:23
    };
    var bb = JSON.stringify(aa);
    console.log(bb); //打印出{"name":"zoumm","age":23}

在序列化js對象時,所有函數與原型成員都會有意忽略,不體現在結果中,此外,值為undeined的任何屬性也會被跳過。例如:

var  aa1 ={
        name:"zj",
        age:25,
tmp:undefined,

    say:function(){ console.log(1); } };
var bb1 = JSON.stringify(aa1); console.log(bb1); //打印{"name":"zj","age":25}
}

將json字符串傳遞給json.parse,就得到js的值,如下:

    var cc = JSON.parse(bb1);
    console.log(cc );//打印Object {name: "zj", age: 25}

雖然cc與aa1有相同的屬性,但是他們是獨立的,沒有任何關系的對象

2:序列化選項

 JSON.stringify()還接受兩個參數,這兩個參數用於指定不同方式序列化js對象,第一個參數可以是對象也可以使函數,第二個是一個選項,表示是否在json字符串中保留 縮進,

 

 var book = {
          name :"zoumm",
          age :23,
          job :"it"
    }
    var text = JSON.stringify(book,["name","job"]);//兩個參數,參數一:函數或者數組,參數二,截取的數據
  console.log(text)//打印 {"name":"zoumm","job":"it"}

 

 

 

3:解析選項

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM