1. 程式人生 > >JSON的key值為數字時如何使用

JSON的key值為數字時如何使用

JSON(JavaScript Object Notation) 是一種輕量級的資料交換格式。易於人閱讀和編寫。同時也易於機器解析和生成。它基於JavaScript(Standard ECMA-262 3rd Edition - December 1999)的一個子集。 JSON採用完全獨立於語言的文字格式,但是也使用了類似於C語言家族的習慣(包括C, C++, C#, Java, JavaScript, Perl, Python等)。這些特性使JSON成為理想的資料交換語言。

比較標準的寫法:

var json = '{"a":"1", "b":"2"}';    
var
data = eval('('+ json +')'); alert(data.a); alert(data['a']);

這樣兩種方式都可以取到json中的值。
但是當key的值為數字時,只能使用類似陣列下表的訪問方式取值。

var json = '{"0":"a", "1":"b", "age":2}';    
var data = eval('(' + json + ')');    
//alert(data.0);    //報錯,此方式不可用    
alert(data['0']);    
alert(data[0]);    //注意此寫法與陣列用下標訪問是相同的    
alert(data.age) alert(data['age'])
1.使用json時,通常都使用第一種方式,且key一般應使用合法的變數名(字母或下劃線開頭的包括字母、下劃線和數字的字串)
2.物件的兩種訪問方式:data.key和data[’key’]各自有自己的應用場景,一般情況使用data.key即可,也比較直觀(它符合其它高階語言中訪問物件中屬性的方式);
當key為一個變數時,並且使用在迴圈中,用data[‘key’]這種方式。
for(var i=0; i < 10; i++) {    
  s += data['key' + i];  //迴圈呼叫,可簡化程式碼    
}
3.第三種採用數字做key的方式,雖然不推薦,但也是有其應用價值的; 如當建立一個與資料庫中id一一對應的map物件的時候,可直接用id的數值做key,雖然你可以給它加上一個字母字首來讓它符合合法的變數名的標準, 並讓它的資料能通過data.key的方式訪問, 但如果資料量非常大的話,為每個id都加一個字首,+字元連線運算也是要消耗效能的,特別是在很少需要採用data.key方式去訪問屬性的情況下,那麼可以拋棄此呼叫方式,直接用數字做key也未嘗不可, 除了key名稱不符合合法變數名的標準之外,似乎並沒有其它損失。