本篇文檔(已撰寫)
JSON簡介
JSON(JavaScript Object Notation) 是一種輕量級的數據交換格式。它基於JavaScript的一個子集。
JSON採用完全獨立於語言的文本格式,但是也使用了類似於C語言家族的習慣(包括C, C++, C#, Java, JavaScript,
Perl, Python等)。這些特性使JSON成爲理想的數據交換語言。易於人閱讀和編寫,同時也易於機器解析和生成,json生成的數據量比XML 還要少一些,所以很多公司傳輸數據喜歡用JSON數據格式 。
JSON語法規則
JSON 語法是 JavaScript 對象表示語法的子集。
• 數據在鍵值對中
• 數據由逗號分隔
• 花括號保存對象
• 方括號保存數組
JSON 名稱/值對
JSON 數據的書寫格式是:名稱/值對。
名稱/值對組合中的名稱寫在前面(在雙引號中),值對寫在後面(同樣在雙引號中),中間用冒號隔開:
1 "firstName":"John"
這很容易理解,等價於這條 JavaScript 語句:
1 firstName="John"
JSON值
JSON 值可以是:
• 數字(整數或浮點數)
• 字符串(在雙引號中)
• 邏輯值(true 或 false)
• 數組(在方括號中)
• 對象(在花括號中)
• null
JSON結構
對象結構
數組結構
對象和數組結合的複雜數據結構
json簡單說就是javascript中的對象和數組,所以這兩種結構就是對象和數組兩種結構,通過這兩種結構可以表示各種複雜的結構。
1、 對象:對象在js中表示爲“{}”括起來的內容,
a) 數據結構爲 {key:value,key:value,...}的鍵值對的結構,
b) 在面向對象的語言中,key爲對象的屬性,value爲對應的屬性值,所以很容易理解,取值方法爲 對象.key 獲取屬性值,這個屬性值的類型可以是 數字、字符串、數組、對象幾種。
2、 數組:數組在js中是中括號“[]”括起來的內容,
a) 數據結構爲 ["java","javascript","vb",...],
b) 取值方式和所有語言中一樣,使用索引獲取,字段值的類型可以是 數字、字符串、數組、對象幾種。
經過對象、數組2種結構就可以組合成複雜的數據結構了。
JSON兩種結構組合示例
觀看技巧:從最外層,然後再外裏層,逐層看
{ "authors": [ { "firstName": "Isaac", "genre": "sciencefiction", "lastName": "Asimov" }, { "firstName": "Tad", "genre": "fantasy", "lastName": "Williams" }, { "firstName": "Frank", "genre": "christianfiction", "lastName": "Peretti" } ], "musicians": [ { "firstName": "Eric", "instrument": "guitar", "lastName": "Clapton" }, { "firstName": "Sergei", "instrument": "piano", "lastName": "Rachmaninoff" } ], "programmers": [ { "email": "aaaa", "firstName": "Brett", "lastName": "McLaughlin" }, { "email": "bbbb", "firstName": "Jason", "lastName": "Hunter" }, { "email": "cccc", "firstName": "Elliotte", "lastName": "Harold" } ] }
JSON的生成和解析
1、 下面通過一個簡單的例子來說明JSON 的解析
try { JSONObject mBj=new JSONObject(); JSONArray mJsonArray=new JSONArray(); mBj.put("students", mJsonArray);//存入主對象 JSONObject mJSONObject1=new JSONObject(); mJSONObject1.put("name", "luci"); mJSONObject1.put("age", 23); mJsonArray.put(mJSONObject1);//存入數組對象 Log.d("log.d", mBj.toString()); } catch (JSONException e) { e.printStackTrace(); }
2、json數據生成
try { JSONObject mBj=new JSONObject(); JSONArray mJsonArray=new JSONArray(); mBj.put("students", mJsonArray);//存入主對象 JSONObject mJSONObject1=new JSONObject(); mJSONObject1.put("name", "luci"); mJSONObject1.put("age", 23); mJsonArray.put(mJSONObject1);//存入數組對象 Log.d("log.d", mBj.toString()); } catch (JSONException e) { e.printStackTrace(); }
3.生成的數據
參考資料如下:
josn簡介(百度百科)
josn解析和生成百度經驗