zoukankan      html  css  js  c++  java
  • Android用GSon处理Json数据

     

    此篇接上篇 Android访问WCF(下篇)-客户端开发 将服务器获取的JSON数据通过GSON这个类库, 进行反序列化, 并通过UI显示出来.

    如何在Android平台上用GSON反序列化JSON数据, 参考了这篇文章 http://benjii.me/2010/04/deserializing-json-in-android-using-gson/

    一. 建立我们包装好的Http请求类文件 WebDataGetApi.java

    二. 建立JsonDataGetApi.java

    三. 建立Android端Account模型Account.java

    四. 在我们的主Activity中调用刚才的方法, 在这一步中我们需要引入Google的gson 库gson-1.6.jar至我们的工程(下载地址)
    五.我们开始构建UI

    打开layout下的main.xml

    在配置好RunConfiguration之后,我们开始运行程序,  查看Log发现有以下错误,

    意思是说访问被禁止,也就是未授权访问,  其意思并不是我们的服务未授权, 因为Andriod具有很好的很好很好的安全机制, 我们要访问网络必须要经过授权才可以;

    我们打开res目录下AndroidManifest.xml, 注意字体加粗放大的那句, 就是给我们的程序加入Internet的访问授权.

    再次运行程序, 会发现显示如下:

     

     

    从上图中的statuscode = 200来看,说明我们的请求已经成功, 问题出现在Json Parse(Json数据转换/反序列化/格式化)的过程中, 我们现在把从服务器传过来的数据拿出来看看, 在浏览器输入我们的服务地址: http://localhost:82/AccountService/Json/GetAccountData 

    [
     {
         "Address": "YouYi East Road",
         "Age": 56,
         "Birthday": "/Date(1298605481453+0800)/",
         "Name": "Bill Gates"
     },
     {
         "Address": "YouYi West Road",
         "Age": 57,
         "Birthday": "/Date(1298605481453+0800)/",
         "Name": "Steve Paul Jobs"
     },
     {
         "Address": "YouYi North Road",
         "Age": 65,
         "Birthday": "/Date(1298605481453+0800)/",
         "Name": "John D. Rockefeller"
     }
    ]

    我们发现其中的Birthday的结果并非我们想象中yyyy-mm-dd HH:mm:ss类型, 究其原因可以查看MSDN文章《JavaScript 和 .NET 中的 JavaScript Object Notation (JSON) 简介

    现在我们给我们的GsonBuilder指定Date的序列化方法, 先增加一个Date反序列化的类DateDeserializer.java

    其次修改Activity类中的GetDate方法如下, 注意其中加粗的部分.
    我们现在再运行程序 :

     

    执行成功.

    示例下载

  • 相关阅读:
    【转】acm小技巧
    poj-1703-Find them, Catch them
    poj-1611-The Suspects
    poj-2236-Wireless Network
    hdu-4496-D-City
    hdu-1213-How Many Tables
    hdu-1856-More is better
    gcd和ex_gcd
    递归趣文
    算法实质【Matrix67】
  • 原文地址:https://www.cnblogs.com/cpcpc/p/2122989.html
Copyright © 2011-2022 走看看