2015-11-19
1:53 PM
JSON 算是目前主流的資料交換格式
跟 XML 比較起來 JSON的優點就是檔案小很多
但可讀性卻一點也不輸給 XML(這裡的可讀性是指"人")
以下就來簡單介紹 JSON 格式 以及如何解析資料
將 JSON 字串轉為物件 或是將物件轉換為 JSON 字串
在這裡會用到 Google 維護的 Gson Library
程式碼範例
// 陣列表達 [string1, string2, string3] // 物件表達 {key1 : value1, key2 : value2, key3 : value3} // 基本JSON表達式 { "id": 1, "name": "Hello JSON", "friends": [ { "id": 2, "name": "Hello JAVA", }, { "id": 3, "name": "Hello Andoird", } ], "certified": true } // 將 JSON 字串轉換為物件 return new GsonBuilder() // 若不須將日期自動轉換為 Date 物件則不須加入 setDateFormat 方法 .setDateFormat("yyyy-MM-dd'T'HH:mm:ssZ") .create() // json 為 JSON字串, YourJsonObject.class 就是要轉換為的物件類型 .fromJson(json, YourJsonObject.class); // 若物件內的名稱與 JSON 內的名稱有些許差異時 // 可以用 @SerializedName("field_name") 指定 @SerializedName("issued_at") private String fieldName; // 若想轉換為 Map 格式 可使用以下方式 Type t = new TypeToken<Map<String,Machine>>() {}.getType(); Map<String,Machine> map = (Map<String,Machine>) new Gson().fromJson("json", t); // 若 JSON 內容最外層為陣列 而想轉換為 List 時可使用以下方式 Type t = new TypeToken<List<SearchResult>>() {}.getType(); List<SearchResult> list = (List<SearchResult>) new Gson().fromJson("json", t); // 將物件轉為 JSON 格式字串 return new GsonBuilder() // 指定 Gson 不預先 escape html 的某些字元(如 "<", ">") .disableHtmlEscaping() .create() .toJson(this);
各項資料連結
Android - HttpURLConnection 基本教學 取得網頁資料(HTML, XML, JSON)
Android - 使用 HttpURLConnection 自動轉址失效的解決方式
google/gson - GitHub
JSON - MDN
No comments:
Post a Comment