Android中 GsonFormat插件解析Jason 數據+和風天氣接口解析案例


首先 轉載自http://www.cnblogs.com/androidsuperman/p/4579249.html     感謝 @西北野狼  同學。

第一部分: GsonFormat 插件基本使用方法

很久以前寫json解析用原始的解析json的方法,后來為了加快開發進度,開始使用gson,fastjson等第三方jar包來進行json解析,為了保持apk足夠小,不因為引入jar包導致apk文件過大,選擇使用gson來加速json解析,當然,去年androidstudio 1.0版本出來,很多人開始使用androidstudio,當然studio有很多方便開發的插件加速應用的開發,減少開發者的勞動力。

 
今天推薦個工具就是:gsonformat
 
下載地址:
 
用過后表示,怎么這么酸爽的呢,哈哈
安裝流程:
Setting-->plugins-->
 
使用:
自定義個javaBean(無任何內容,就一個空的類)
首先復制你要解析的json
然后alt+insert彈出如下界面
 
粘貼到如下界面:
 
 
點擊ok,自動生成對應javaBean的語句:
然后就是根據json來進行json to bean的轉換了
提供兩工具類:
  1. 復制代碼
     1 import java.util.List;
     2 /**
     3  * TODO: json工具類
     4  * 
     5  * @author soyoungboy
     6  * @date 2014-11-8 下午2:32:24
     7  */
     8 public abstract class Json {
     9     private static Json json;
    10     Json() {
    11     }
    12     public static Json get() {
    13         if (json == null) {
    14             json = new GsonImpl();
    15         }
    16         return json;
    17     }
    18     public abstract String toJson(Object src);
    19     public abstract <T> T toObject(String json, Class<T> claxx);
    20     public abstract <T> T toObject(byte[] bytes, Class<T> claxx);
    21     public abstract <T> List<T> toList(String json, Class<T> claxx);
    22 }
    復制代碼
    復制代碼
     1 public class GsonImpl extends Json {
     2     private Gson gson = new Gson();
     3     @Override
     4     public String toJson(Object src) {
     5         return gson.toJson(src);
     6     }
     7     @Override
     8     public <T> T toObject(String json, Class<T> claxx) {
     9         return gson.fromJson(json, claxx);
    10     }
    11     @Override
    12     public <T> T toObject(byte[] bytes, Class<T> claxx) {
    13         return gson.fromJson(new String(bytes), claxx);
    14     }
    15     @Override
    16     public <T> List<T> toList(String json, Class<T> claxx) {
    17           Type type = new TypeToken<ArrayList<T>>() {}.getType();  
    18              List<T> list = gson.fromJson(json, type);  
    19         return list;
    20     }
    21 }
    復制代碼

     

 
然后就是一句話,完美解析json了:
  1.  1 JavaBean bean =GsonImpl.get().toObject(json,JavaBean.class); 
完美解析json就是這么簡單,就是這么酸爽。
 
解析json的工具類來自lite君的github的輪子代碼。
https://github.com/litesuits/android-lite-http/tree/master/library/src/com/litesuits/http/data
 
 
第二部分:使用GsonFormat 解析  和風天氣接口數據
 
和風天氣:http://www.heweather.com/     每日3000次訪問量,對我們業余愛好者足夠了,拿來做個天氣預報DEMO不錯。
 
首先是從和風天氣獲得的天氣數據,Jason 格式, 放到 jason.parse.online.fr上看是這樣的:
 
但是!!!!!    按照第一部分的方法,個Jason  數據復制進去,點OK 你會發現它提示   Parse err!   為什么了,因為這個和風天氣奇葩的Jason數據,第一個KEY是 "HeWeather data service 3.0" ,,這里的 空格、“.”都是不合法的,導致它解析不出對應得實體類。    那怎么辦了?
 首先,解析的時候直接 把接口方法的Jason數據(上圖左邊部分) 的第一行,第一個KEY,也就是    "HeWeather data service 3.0" 替換成 "HeWeatherdataservice",去掉空格以及3.0, 復制進GsonFormat插件的粘貼板,點擊OK,你會發現解析成功了。      
 然后,把網頁返回的Json原始數據也做上述 處理,再解析。  實體類 和 要解析的數據當然要保持一致對吧~ 
這里我用了 StringBulder的 deleteCharAt 方法,按照字符串的下標把空格和 “3.0”去掉了,,然后, 用第一章說的那一行代碼,Json解析搞定~~~  調試看,在weatherBean  這個對象里,數據都已經乖乖的在那里了!!
 
總結:搞了我好半天,這個格式不規范的Jason數據,不過也算找到了 處理方法,接口得到的Jason數據要是不規范,可以先自己處理成規范的格式,,再用JasonFormat插件進行解析,然后程序里在HTTP方式獲取到的Jason  String,也用代碼處理成一樣的格式。  這樣,實體類和Jason String對應起來,格式一致。  接下來,就是一行代碼搞定的事了 。。。。。是不是 從此Json 解析都能2分鍾搞定呢???~~~  
 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM