Android中JSON數據使用
JSON(JavaScript Object Notation) :一種輕量級的數據交換格式,基于JavaScript的一個子集。 JSON采用完全獨立于語言的文本格式,使JSON成為理想的數據交換語言。易于人閱讀和編寫,同時也易于機器解析和生成(網絡傳輸速度快)。作為一種數據交換格式,JSON優勢很明顯(相對與我們通常使用的XML):JSON比XML體積小;JSON和JavaScript交互更加方便;JSON的速度要遠遠大于XML;JSON的解析要比XML的解析要方便等。
JSON語法規則:
-
數據在名稱/值(鍵值)對中
-
數據由逗號(,)分隔
-
花括號{}保存對象
-
方(中)括號[]保存數組 JSON 數據的書寫格式是:名稱/值對。名稱主要是用加“”的字符串表示,值可以是多種格式,包括
-
數字(整數或浮點數)
-
字符串(在雙引號("")中)
-
邏輯值(true 或 false)
-
數組(在方括號中)
-
對象(在花括號中)
-
null
{
"tel" : ["12345678", "87654321"], // 數組形式,以方括號保存
"name" : "tianjiefeng", // 字符串
"age" : 20, // 數值
"address" : { "country" : "china", "province" : "guangdong" }, // JSON對象,以花括號保存
"graduate" : true // 布爾值
}
那個Android開發中JSON格式的數據如何創建?又如何解析呢?首先舉如何創建下面這個JSON的例子:
private JSONObject createJSONData() {
// 最外層是花括號{},所以就是一個JSONObject對象
JSONObject student = new JSONObject();
try {
// 第1個value是[ ],也就是一個JSONArray對象
JSONArray tel= new JSONArray();
phone.put("12345678");
phone.put("87654321");
person.put("tel", tel);
// 第2個value一個字符串
person.put("name", "tianjiefeng");
// 第3個value一個字符串數值
person.put("age", 20);
// 第4個value一個JSONObject對象
JSONObject address = new JSONObject();
address.put("country", "china");
address.put("province", "guangdong");
person.put("address", address);
// 第5個value一個布爾值
person.put("graduate", true);
} catch (JSONException e) {
e.printStackTrace();
}
return student ;
}
如果要返回String字符串,只需要修改為return student.toString();下面看下如何把上面的JSON數據解析出來:
private Map<String, Object> parseJSONData(String json) {
Map<String, Object> resultMap = new HashMap<String, Object>();
try {
// 直接把JSON字符串轉化為一個JSONObject對象
JSONObject student= new JSONObject(json);
// 第1個鍵值對
resultMap.put("tel", person.getJSONArray("tel").toString());
// 第2個鍵值對
resultMap.put("name", person.getString("name"));
// 第3個鍵值對
resultMap.put("age", person.getInt("age"));
// 第4個鍵值對
resultMap.put("address", person.getJSONObject("address").toString());
// 第5個鍵值對
resultMap.put("graduate", person.getBoolean("married"));
} catch (JSONException e) {
e.printStackTrace();
}
return resultMap;
}
} 上面就是用我們用JSONObject 及JSONArray進行數據操作。但在實際開發中,我們一般都會使用Gson解析JSON數據
首先,從 code.google.com/p/google-gson/downloads/list下載GsonAPI和相關jar包,然后通過GJSON封裝的方法來處理數據。 Gson的解析非常簡單,但是它的解析規則是必須有一個bean文件,這個bean文件的內容跟JSon數據類型是一一對應。Gson有兩個重要的方法,一個就是tojson(tojson就是將bean里面的內容轉換為json內容),一個就是fromjson(從我們的Json對象封裝出一個一個的bean對象)。其簡單的例子可以參考:http://blog.csdn.net/kongzhichen/article/details/10135051