js中 json详解
?
?
json的語法可以表示以下三種類型的值。
1、簡單值:可以在json中表示字符串、數值、布爾和null。
2、對象:對象作為一種復雜的數據類型,表示一組有序的鍵值對兒。
3、數組:數組也是一種復雜的數據類型,表示一組有序的值列表,可以通過數值索引來訪問其中的值。
json不支持變量、函數或對象實例,它就是一種表示結構化數據的格式。
1.1:簡單值:
如下10,“aa”,json字符串與js字符串最大的區別是json字符串必須使用雙引號布爾與null也是有效的json形式。
2.1:對象
對象字面量一般寫法是:
| 1 2 3 4 5 6 | 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"}?
?
?
總結
以上是生活随笔為你收集整理的js中 json详解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 用字符串表达式访问JSON数据(java
- 下一篇: 新浪微博html5,新浪微博接入Html