Search

Java - JSON 資料解析基本教學

2015-11-19 1:53 PM

JSON 算是目前主流的資料交換格式

跟 XML 比較起來 JSON的優點就是檔案小很多

但可讀性卻一點也不輸給 XML(這裡的可讀性是指"人")

以下就來簡單介紹 JSON 格式 以及如何解析資料

將 JSON 字串轉為物件 或是將物件轉換為 JSON 字串

在這裡會用到 Google 維護的 Gson Library

程式碼範例
  1. // 陣列表達
  2. [string1, string2, string3]
  3.  
  4. // 物件表達
  5. {key1 : value1, key2 : value2, key3 : value3}
  6.  
  7. // 基本JSON表達式
  8. {
  9. "id": 1,
  10. "name": "Hello JSON",
  11. "friends": [
  12. {
  13. "id": 2,
  14. "name": "Hello JAVA",
  15. },
  16. {
  17. "id": 3,
  18. "name": "Hello Andoird",
  19. }
  20. ],
  21. "certified": true
  22. }
  23.  
  24. // 將 JSON 字串轉換為物件
  25. return new GsonBuilder()
  26. // 若不須將日期自動轉換為 Date 物件則不須加入 setDateFormat 方法
  27. .setDateFormat("yyyy-MM-dd'T'HH:mm:ssZ")
  28. .create()
  29. // json 為 JSON字串, YourJsonObject.class 就是要轉換為的物件類型
  30. .fromJson(json, YourJsonObject.class);
  31.  
  32. // 若物件內的名稱與 JSON 內的名稱有些許差異時
  33. // 可以用 @SerializedName("field_name") 指定
  34. @SerializedName("issued_at")
  35. private String fieldName;
  36.  
  37. // 若想轉換為 Map 格式 可使用以下方式
  38. Type t = new TypeToken<Map<String,Machine>>() {}.getType();
  39. Map<String,Machine> map = (Map<String,Machine>) new Gson().fromJson("json", t);
  40.  
  41. // 若 JSON 內容最外層為陣列 而想轉換為 List 時可使用以下方式
  42. Type t = new TypeToken<List<SearchResult>>() {}.getType();
  43. List<SearchResult> list = (List<SearchResult>) new Gson().fromJson("json", t);
  44.  
  45. // 將物件轉為 JSON 格式字串
  46. return new GsonBuilder()
  47. // 指定 Gson 不預先 escape html 的某些字元(如 "<", ">")
  48. .disableHtmlEscaping()
  49. .create()
  50. .toJson(this);
各項資料連結
Android - HttpURLConnection 基本教學 取得網頁資料(HTML, XML, JSON)
Android - 使用 HttpURLConnection 自動轉址失效的解決方式
google/gson - GitHub
JSON - MDN

No comments:

Post a Comment