從結構上看,所有的數據(data)最終都可以分解成三種類型:
第一種類型是標量(scalar),也就是一個單獨的字符串(string)或數字(numbers),比如"北京"這個單獨的詞。
第二種類型是序列(sequence),也就是若干個相關的數據按照一定順序并列在一起,又叫做數組(array)或列表(List),比如"北京,上海"。
第三種類型是映射(mapping),也就是一個名/值對(Name/value),即數據有一個名稱,還有一個與之相對應的值,這又稱作散列(hash)或字典(dictionary),比如"首都:北京"。
Json的規格:
1) 并列的數據之間用逗號(", ")分隔。
2) 映射用冒號(": ")表示。
3) 并列數據的集合(數組)用方括號("[]")表示。
4) 映射的集合(對象)用大括號("{}")表示。
格式1:
"北京市的面積為16800平方公里,常住人口1600萬人。上海市的面積為6400平方公里,常住人口1800萬。"
格式2:
[
{"城市":"北京","面積":16800,"人口":1600},
{"城市":"上海","面積":6400,"人口":1800}
]
格式3:
[
["北京",16800,1600],
["上海",6400,1800]
]
"數組"(array)和"對象"(object)的根本區別在哪里,兩者都可以用來表示數據的集合
比如有一個數組a=[1,2,3,4],還有一個對象a={0:1,1:2,2:3,3:4},然后你運行alert(a[1]),兩種情況下的運行結果是相同的!這就是說,數據集合既可以用數組表示,也可以用對象表示,那么我到底該用哪一種呢?
我后來才知道,數組表示有序數據的集合,而對象表示無序數據的集合。如果數據的順序很重要,就用數組,否則就用對象。
當然,數組和對象的另一個區別是,數組的數據沒有"名稱"(name),對象的數據有"名稱"(name)。
var a={"城市":"北京","面積":16800,"人口":1600};
但是,也可以定義成一個關聯數組:
a["城市"]="北京";
a["面積"]=16800;
a["人口"]=1600;