• 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
                ] 
        } 
    }

  • 相关阅读:
    平时十二测
    无题十四
    暑假第十测
    无题十三
    noip错题集
    无题十二
    BZOJ整理
    志愿者招募
    修车
    任务安排
  • 原文地址:https://www.cnblogs.com/ct732003684/p/2957324.html
Copyright © 2020-2023  润新知