Gson解析json數據


1.從服務端獲取的json數據,經由gson反序列化后,ui顯示出來

public void getJsonData() {
        JsonDataGetApi api = new JsonDataGetApi();
        JSONArray jArr;
        JSONObject jobj;
        try {
            //調用GetAccountData方法
            jArr = api.getArray("GetAccountData");
            //從返回的Account Array中取出第一個數據
            jobj = jArr.getJSONObject(0);
            
            GsonBuilder gsonb = new GsonBuilder();
            //Json中的日期表達方式沒有辦法直接轉換成我們的Date類型, 因此需要單獨注冊一個Date的反序列化類.
            DateDeserializer ds = new DateDeserializer();
            //給GsonBuilder方法單獨指定Date類型的反序列化方法
            gsonb.registerTypeAdapter(Date.class, ds);
            
            Gson gson = gsonb.create();

            Account account = gson.fromJson(jobj.toString(), Account.class);

            Log.d("LOG_CAT", jobj.toString());
            ((TextView) findViewById(R.id.Name)).setText(account.Name);
            ((TextView) findViewById(R.id.Age)).setText(String.valueOf(account.Age));
            ((TextView) findViewById(R.id.Birthday)).setText(account.Birthday
                    .toGMTString());
            ((TextView) findViewById(R.id.Address)).setText(account.Address);

        } catch (Exception e) {
            Toast.makeText(getApplicationContext(), e.getMessage(),
                    Toast.LENGTH_LONG).show();
            e.printStackTrace();
        }
    }

Json是一種類似於XML的通用數據交換格式,具有比XML更高的傳輸效率. 
從結構上看,所有的數據(data)最終都可以分解成三種類型: 
第一種類型是標量(scalar),也就是一個單獨的字符串(string)或數字(numbers),比如"北京"這個單獨的詞。 
第二種類型是序列(sequence),也就是若干個相關的數據按照一定順序並列在一起,又叫做數組(array)或列表(List),比如"北京,上海"。 
第三種類型是映射(mapping),也就是一個名/值對(Name/value),即數據有一個名稱,還有一個與之相對應的值,這又稱作散列(hash)或字典(dictionary),比如"首都:北京"。 
Json的規格非常簡單,只用一個頁面幾百個字就能說清楚,而且Douglas Crockford聲稱這個規格永遠不必升級,因為該規定的都規定了。 
1) 並列的數據之間用逗號(",")分隔。 
2) 映射用冒號(":")表示。 
3) 並列數據的集合(數組)用方括號("[]")表示。 
4) 映射的集合(對象)用大括號("{}")表示。 

普通形式的:
服務器端返回的json數據格式如下:

{
"userbean":{"Uid":"100196","Showname":"\u75af\u72c2\u7684\u7334\u5b50","Avtar":null,"State":1}}

 

帶數組形式的:
服務器端返回的數據格式為:

{
"calendar"
    {
"calendarlist"
            [ 
            {
"calendar_id":"1705","title":"(\u4eb2\u5b50)ddssd","category_name":"\u9ed8\u8ba4\u5206\u7c7b","showtime":"1288927800","endshowtime":"1288931400","allDay":false}, 
            {
"calendar_id":"1706","title":"(\u65c5\u884c)","category_name":"\u9ed8\u8ba4\u5206\u7c7b","showtime":"1288933200","endshowtime":"1288936800","allDay":false
            ] 
    } 
}

 


免責聲明!

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



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