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做了个大致介绍,今天我们和以往一样,从内部实现.原理的角度带领大家看看 其工作机制,以便加深理解.写程序越多,我发现每接触一个新东西,都会有强烈 ...
随机推荐
- MongoDB系列一:CentOS7.2下安装mongoDB3.2.8
最近在又在倒腾MongoDB,把安装配置的相关命令贴出来 1.下载 wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70- ...
- 使用Entity Framework通过code first方式创建数据库和数据表
开发环境 WIN10 Entity Framework6.0 MVC5.0 开发工具 VS2015 SqlServer2012 1.创建上下文Context继承DbContext,并创建其他的业 ...
- linux 配置ssh免密码登陆本机
1.安装 sudo apt-get install ssh 2.配置无密码登录 ssh-keygen -t rsa 遇到停顿按回车即可 进入/home/zeze/.ssh目录(隐藏目录,在winSCP ...
- linux 用户创建、管理、权限分配
(1)su与sudo su:通过su可以在用户之间切换,如果超级权限用户root向普通或虚拟用户切换不需要密码,什么是权力?这就是!而普通用户切换到其它任何用户都需要密码验证: sudo: sudo扮 ...
- Deep Learning入门视频(下)之关于《感受神经网络》两节中的代码解释
代码1如下: #深度学习入门课程之感受神经网络(上)代码解释: import numpy as np import matplotlib.pyplot as plt #matplotlib是一个库,p ...
- sql server 中不同服务器上的数据库中表怎么互导数据
--创建一个链接 EXEC sp_addlinkedserver 'OtherServerDb','','SQLOLEDB','192.168.12.101' --第一个参数是给远程的服务器起的别名 ...
- href使用 javascript:;与javascript:void(0)防跳到顶部
有时候我们在编写js过程中,需要触发事件而不需要返回值,那么就可能需要这样的写法 href=”#”,包含了一个位置信息.默认的锚是#top,也就是网页的上端,当连续快速点击此链接时会导致浏览器巨慢 ...
- 关于装完系统出现a disk read error occurred的解决方法
今天偶遇一台老电脑,很久都没有用了,而且只有几百兆的内存,160G的硬盘,无奈只好装XP系统,GHOST完之后,开机发现出现a disk read error occurred的错误,但是用U盘引导可 ...
- 给定n,a求最大的k,使n!可以被a^k整除但不能被a^(k+1)整除。
题目描述: 给定n,a求最大的k,使n!可以被a^k整除但不能被a^(k+1)整除. 输入: 两个整数n(2<=n<=1000),a(2<=a<=1000) 输出: 一个整数. ...
- IC解密DS2431芯片解密DS2432、DS2433解密多少钱?
IC解密DS2431芯片解密DS2432.DS2433解密多少钱? DS24系列可成功芯片解密的型号: DS2430A | DS2431 | DS2432 | DS2433 | DS2434 | DS ...