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