android中的Json一
JSON
JSON(JavaScript Object Notation) 是一種輕量級的資料交換格式。它基於JavaScript(Standard ECMA-262 3rd Edition - December 1999)的一個子集。 JSON採用完全獨立於語言的文字格式設定,但是也使用了類似於C語言家族的習慣(包括C, C++, C#, Java, JavaScript, Perl, Python等)。這些特性使JSON成為理想的資料交換語言。 易於人閱讀和編寫,同時也易於機器解析和產生(網路傳輸速度)。
JSON 文法
JSON 文法規則JSON 文法是 JavaScript 對象表示文法的子集。
- 資料在成對的名稱和數值中
- 資料由逗號分隔
- 花括弧儲存對象
- 方括弧儲存數組JSON 成對的名稱和數值JSON 資料的書寫格式是:成對的名稱和數值。 成對的名稱和數值組合中的名稱寫在前面(在雙引號中),值對寫在後面(同樣在雙引號中),中間用冒號隔開:
這很容易理解,等價於這條 JavaScript 語句:
JSON 值JSON 值可以是:
- 數字(整數或浮點數)
- 字串(在雙引號中)
- 邏輯值(true 或 false)
- 數組(在方括弧中)
- 對象(在花括弧中)
- null
基礎樣本
名稱 / 值對
| 1 |
{"firstName":"Brett","lastName":"McLaughlin","email":"aaaa"} 表示數組 |
如果使用 JSON,就只需將多個帶花括弧的記錄分組在一起:
| 1 2 3 4 5 6 7 |
{ "people":[ {"firstName":"Brett","lastName":"McLaughlin","email":"aaaa"}, {"firstName":"Jason","lastName":"Hunter","email":"bbbb"}, {"firstName":"Elliotte","lastName":"Harold","email":"cccc"} ] } |
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
{"programmers":[ {"firstName":"Brett","lastName":"McLaughlin","email":"aaaa"}, {"firstName":"Jason","lastName":"Hunter","email":"bbbb"}, {"firstName":"Elliotte","lastName":"Harold","email":"cccc"} ], "authors":[ {"firstName":"Isaac","lastName":"Asimov","genre":"sciencefiction"}, {"firstName":"Tad","lastName":"Williams","genre":"fantasy"}, {"firstName":"Frank","lastName":"Peretti","genre":"christianfiction"} ], "musicians":[ {"firstName":"Eric","lastName":"Clapton","instrument":"guitar"}, {"firstName":"Sergei","lastName":"Rachmaninoff","instrument":"piano"} ]} |
賦值給變數例如,可以建立一個新的 JavaScript 變數,然後將 JSON 格式的資料字串直接賦值給它: [3]
| 1 2 3 4 5 6 7 8 9 10 11 12 13 |
var people={"programmers":[{"firstName":"Brett","lastName":"McLaughlin","email":"aaaa"}, {"firstName":"Jason","lastName":"Hunter","email":"bbbb"}, {"firstName":"Elliotte","lastName":"Harold","email":"cccc"} ], "authors":[ {"firstName":"Isaac","lastName":"Asimov","genre":"sciencefiction"}, {"firstName":"Tad","lastName":"Williams","genre":"fantasy"}, {"firstName":"Frank","lastName":"Peretti","genre":"christianfiction"} ], "musicians":[ {"firstName":"Eric","lastName":"Clapton","instrument":"guitar"}, {"firstName":"Sergei","lastName":"Rachmaninoff","instrument":"piano"} ]} |
訪問資料儘管看起來不明顯,但是上面的長字串實際上只是一個數組;將這個數組放進 JavaScript變數之後,就可以很輕鬆地訪問它。實際上,只需用點號標記法來表示數組元素。所以,要想訪問 programmers 列表的第一個條目的姓氏,只需在 JavaScript 中使用下面這樣的代碼:
| 1 |
people.programmers[0].lastName; |
注意,數組索引是從零開始的。所以,這行代碼首先訪問 people變數中的資料;然後移動到稱為 programmers的條目,再移動到第一個記錄([0]);最後,訪問 lastName鍵的值。結果是字串值 “McLaughlin”。 下面是使用同一變數的幾個樣本。
| 1 2 3 |
people.authors[1].genre//Valueis"fantasy" people.musicians[3].lastName//Undefined.Thisreferstothefourthentry,andthereisn'tone people.programmers[2].firstName//Valueis"Elliotte" |
利用這樣的文法,可以處理任何 JSON 格式的資料,而不需要使用任何額外的 JavaScript 工具包或 API。修改資料正如可以用點號和方括弧訪問資料,也可以按照同樣的方式輕鬆地修改資料:
| 1 |
people.musicians[1].lastName="Rachmaninov"; |
在將字串轉換為 JavaScript 對象之後,就可以像這樣修改變數中的資料。換回字串最終結論是,如果要處理大量 JavaScript 對象,那麼 JSON 是一個好選擇,這樣就可以輕鬆地將資料轉換為可以在請求中發送給伺服器端程式的格式。