FastJson和AsyncHttpCLient
Android的展示数据,除了上章所讲的本地存储外,大部分数据都来自于网络。首先介绍一下Android APP开发常见的网络操作方式。从网络层面上有底层的tcp/ip,也就是我们常见的socket套接字,常见于IM、消息推送等应用场景。另外常见的就是Http协议、webservice协议,常用于提供数据接口。常应用的数据格式有xml、json。其中最常见的也就是Http+Json的组合,这也是我们接下来要讲解的重点。在这么多项目的累计中,对于Http的访问,我用过HttpUtil这样的工具类,当然里面封装了简单的get post方法。另外也用过volley这样的集成框架。现在向大家推荐下我觉得最好用的一个框架就是AsyncHttpClient。先上一段简单的示例代码。
另外一个就是Json的解析,当然有sdk里面的JSONArray JsonObject,也用过gson的框架,这个过程中,用到最好用的就是阿里巴巴的fastJosn。Base里面集成了一个JsonUtil的工具类,可以快速实现对象 json等的相互转化,直接上下代码:
public final class JsonUtil {
   private static String TAG = "FastJson";
   public static boolean isSuccess(String jsonString) {
      JSONObject json;
      boolean flag = false;
      try {
         json = new JSONObject(jsonString);
         flag = json.getBoolean("result");
      } catch (JSONException e) {
         e.printStackTrace();
      }
      return flag;
   }
   public static String getArrayString(String jsonString, String key) {
      String value = "";
      JSONObject json;
      try {
         json = new JSONObject(jsonString);
         value = json.getJSONArray(key).toString();
      } catch (JSONException e) {
         e.printStackTrace();
      }
      return value;
   }
   public static String convertObjectToJson(Object o) {
      SerializerFeature[] features = { SerializerFeature.QuoteFieldNames,
            SerializerFeature.WriteMapNullValue,
            SerializerFeature.WriteNullListAsEmpty,
            SerializerFeature.WriteNullStringAsEmpty,
            SerializerFeature.WriteNullNumberAsZero, 
            SerializerFeature.WriteNullBooleanAsFalse,
            SerializerFeature.WriteSlashAsSpecial,
            SerializerFeature.BrowserCompatible,
            SerializerFeature.DisableCircularReferenceDetect,
            SerializerFeature.WriteDateUseDateFormat };
      try {
         Log.d(TAG, JSON.toJSONString(o, features));
         return JSON.toJSONString(o, features);            
      } catch (Exception e) {
         Log.e(TAG, e.toString());
         return "";
      }
   }
   public static <T> T convertJsonToObject(String json, Class<T> clazz) {
      try {
         return JSON.parseObject(json, clazz);
      } catch (Exception e) {
         Log.e(TAG, e.toString());
         Log.e("merror", e.toString());
         return null;
      }
   }
   public static <T> List<T> convertJsonToList(String json, Class<T> clazz) {
      try {
         return JSON.parseArray(json, clazz);
      } catch (Exception e) {
         Log.e(TAG, e.toString());
         System.out.println(e.toString());
         return null;
      }
   }
}
public void login(final String userName, final String password, final CustomAsyncResponehandler handler) {
    RequestModel requestModel = new RequestModel();
    RequestParams params = new RequestParams();
    params.put("userName", userName);
    params.put("password", password);
    requestModel.setParams(params);
    requestModel.setCls(User.class);
    requestModel.setShowErrorMessage(true);
    requestModel.setUrl(Urls.userLogin);
    httpClient.post(requestModel, new CustomAsyncResponehandler() {
        @Override
        public void onSuccess(ResponeModel baseModel) {
            super.onSuccess(baseModel);
            if (baseModel != null && baseModel.isStatus()) {
                AppContext.currentUser = (User) baseModel.getResultObj();
                AppContext.currentUser.setUserName(userName);
                if (userDao != null) {
                    userDao.insert(AppContext.currentUser);
                }
            }
            handler.onSuccess(baseModel);
        }
    });
}
在业务层都看不到json的解析代码了,直接通过CustomAsyncHttpClient拿到目标对象进行操作。
FastJson和AsyncHttpCLient的更多相关文章
- Base-Android快速开发框架(四)--网络操作之FastJson以及AsyncHttpClient
		Android的展示数据,除了上章所讲的本地存储外,大部分数据都来自于网络.首先介绍一下Android APP开发常见的网络操作方式.从网络层面上有底层的tcp/ip,也就是我们常见的socket套接 ... 
- fastjson 混淆注意事项
		使用fastjson 注意事项,主要表现: 1.加了符号Annotation 的实体类,一使用就会奔溃 2.当有泛型属性时,一使用就奔溃 在调试的时候不会报错,当你要打包签名混淆包的时候,就会出现上述 ... 
- Java的Json解析包FastJson使用
		阿里巴巴FastJson是一个Json处理工具包,包括“序列化”和“反序列化”两部分,它具备如下特征:速度最快,测试表明,fastjson具有极快的性能,超越任其他的Java Json parser. ... 
- fastJson使用
		fastjson 是一个性能很好的 Java 语言实现的 JSON 解析器和生成器,由阿里巴巴的工程师开发. 主要特点: 快速FAST (比其它任何基于Java的解析器和生成器更快,包括jackson ... 
- 异步网络加载开源框架AsyncHttpClient使用
		AsyncHttpClient是异步的,但是有时候我们需要得到请求的结果集来返回给某个函数,由于是异步的,所以不能够直接return会去,所以可以定义一个interface来给调用AsyncHttpC ... 
- FASTJSON
		package com.hanqi.test; import java.util.ArrayList;import java.util.Date;import java.util.List; impo ... 
- Android总结之json解析(FastJson Gson 对比)
		前言: 最近为了统一项目中使用的框架,发现项目中用到了两种json解析框架,他们就是当今非常主流的json解析框架:google的Gson 和阿里巴巴的FastJson,为了废除其中一个所以来个性能和 ... 
- Android原生json和fastjson的简单使用
		android原生操作json数据 主要是两个类 JSONObject 操作对象 JONSArray操作json数组 对象转json //创建学生对象 Student student=new ... 
- AsyncHttpClient 源码分析
		上一篇文章从功能和用法上对AsyncHttpClient做了个大致介绍,今天我们和以往一样,从内部实现.原理的角度带领大家看看 其工作机制,以便加深理解.写程序越多,我发现每接触一个新东西,都会有强烈 ... 
随机推荐
- PHP读写大“二进制”文件,不必申请很大内存(fopen、fread、fwrite、fclose)
			<?php /** * 读写大二进制文件,不必申请很大内存 * 只有读取到内容才创建文件 * 保证目录可写 * * @param string $srcPath 源文件路径 * @param s ... 
- SSI指令
			1.SSI定义 SSI是英文Server Side Includes的缩写, 即“服务器端包含”或“服务器端嵌入”技术. SSI在HTML文件中,可以通过注释行调用的命令或指针,是一种基于服务器端的网 ... 
- 各大搜索引擎智能提示API(JSONP跨域实现自动补全搜索建议)
			---------------------------------------搜索引擎JSONP接口--------------------------------------------- 提示:U ... 
- ID属性值为小数
			获取带有.的id值 <h1 id="123.45">dom对象</h1> <script> $('#123\\.45').attr('id') ... 
- ToolStripMenuItem
			MenuStrip 类 为窗体提供菜单系统. 继承层次结构 System.Object System.MarshalByRefObject System.ComponentModel.Comp ... 
- Python基础四
			1. 集合 主要作用: 去重 关系测试, 交集\差集\并集\反向(对称)差集 2. 元组 只读列表,只有count, index 2 个方法 作用:如果一些数据不想被人修改, 可以存成元组,比如身 ... 
- ASP.NET获取客户端的相关信息
			/// <summary> /// 获取远程浏览器端 IP 地址 /// </summary> /// <returns> ... 
- java导出生成word(类似简历导出)
			参考帖子: http://www.cnblogs.com/lcngu/p/5247179.html http://www.cnblogs.com/splvxh/archive/2013/03/15/2 ... 
- MySQL 5.5安装记录
			安装gnake ./configure && gmake && gmake install 安装ncurses-devel yum install -y ncurses ... 
- 如何创建 Code Snippet
			比如有一行自定义代码段: @property (nonatomic,copy) NSString *<#string#>; 需要添加到 Code Snippet 上,以帮助开发人员开发更便 ... 
