Volley 结合GSON或FastJson用法
自定义GSON类
public class GsonRequest<T> extends Request<T> {
private final Gson mGson = new Gson();
private final Class<T> mClazz;
private final Listener<T> mListener;
private final Map<String, String> mHeaders;
public GsonRequest(String url, Class<T> clazz, Listener<T> listener, ErrorListener errorListener) {
this(Method.GET, url, clazz, null, listener, errorListener);
}
public GsonRequest(int method, String url, Class<T> clazz, Map<String, String> headers,
Listener<T> listener, ErrorListener errorListener) {
super(method, url, errorListener);
this.mClazz = clazz;
this.mHeaders = headers;
this.mListener = listener;
}
@Override
public Map<String, String> getHeaders() throws AuthFailureError {
return mHeaders != null ? mHeaders : super.getHeaders();
}
@Override
protected void deliverResponse(T response) {
mListener.onResponse(response);
}
@Override
protected Response<T> parseNetworkResponse(NetworkResponse response) {
try {
String json = new String(response.data, HttpHeaderParser.parseCharset(response.headers));
return Response.success(mGson.fromJson(json, mClazz),
HttpHeaderParser.parseCacheHeaders(response));
} catch (UnsupportedEncodingException e) {
return Response.error(new ParseError(e));
} catch (JsonSyntaxException e) {
return Response.error(new ParseError(e));
}
}
}
自定义FastJson类
public class FastJsonRequest<T> extends Request<T> {
private final Class<T> mClazz;
private final Listener<T> mListener;
private final Map<String, String> mHeaders;
public FastJsonRequest(String url, Class<T> clazz, Listener<T> listener, ErrorListener errorListener) {
this(Method.GET, url, clazz, null, listener, errorListener);
}
public FastJsonRequest(int method, String url, Class<T> clazz, Map<String, String> headers,
Listener<T> listener, ErrorListener errorListener) {
super(method, url, errorListener);
this.mClazz = clazz;
this.mHeaders = headers;
this.mListener = listener;
}
@Override
public Map<String, String> getHeaders() throws AuthFailureError {
return mHeaders != null ? mHeaders : super.getHeaders();
}
@Override
protected void deliverResponse(T response) {
mListener.onResponse(response);
}
@Override
protected Response<T> parseNetworkResponse(NetworkResponse response) {
try {
String json = new String(response.data, HttpHeaderParser.parseCharset(response.headers));
return Response.success(JSON.parseObject(json, mClazz),
HttpHeaderParser.parseCacheHeaders(response));
} catch (UnsupportedEncodingException e) {
return Response.error(new ParseError(e));
}
}
}
JAR下载
public class MainActivity extends Activity {
private Context context;
private String url="http://www.weather.com.cn/data/sk/101010100.html";
private TextView text;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
context=this;
text=(TextView)this.findViewById(R.id.txttitle);
RequestQueue mQueue = Volley.newRequestQueue(context);
FastJsonRequest<Weather> fastJson=new FastJsonRequest<Weather>(url, Weather.class,
new Response.Listener<Weather>() {
@Override
public void onResponse(Weather weather) {
// TODO Auto-generated method stub
WeatherInfo weatherInfo = weather.getWeatherinfo();
text.setText(weatherInfo.getCity());
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError arg0) {
// TODO Auto-generated method stub
}
});
mQueue.add(fastJson);
GsonRequest<Weather> gsonRequest=new GsonRequest<Weather>(url, Weather.class,
new Response.Listener<Weather>() {
@Override
public void onResponse(Weather weather) {
// TODO Auto-generated method stub
WeatherInfo weatherInfo = weather.getWeatherinfo();
text.setText(text.getText()+weatherInfo.getTime());
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError arg0) {
// TODO Auto-generated method stub
}
});
mQueue.add(gsonRequest);
}
}
Model类
public class Weather {
private WeatherInfo weatherinfo;
public WeatherInfo getWeatherinfo() {
return weatherinfo;
}
public void setWeatherinfo(WeatherInfo weatherinfo) {
this.weatherinfo = weatherinfo;
}
}
public class WeatherInfo {
private String city;
private String temp;
private String time;
public String getCity() {
return city;
}
public void setCity(String city) {
this.city = city;
}
public String getTemp() {
return temp;
}
public void setTemp(String temp) {
this.temp = temp;
}
public String getTime() {
return time;
}
public void setTime(String time) {
this.time = time;
}
}
早期记录 http://www.cnblogs.com/freexiaoyu/p/3446028.html
Volley 结合GSON或FastJson用法的更多相关文章
- Android JSON解析库Gson和Fast-json的使用对比和图书列表小案例
Android JSON解析库Gson和Fast-json的使用对比和图书列表小案例 继上篇json解析,我用了原生的json解析,但是在有些情况下我们不得不承认,一些优秀的json解析框架确实十分的 ...
- OkHttp使用教程——网络操作之OkHttp, Volley以及Gson
写这篇文章的动机 在安卓项目中有一个问题可能无法避免:网络.不管你是加载图片,请求API数据还是从因特网上获得一个字节,你都是在使用网络. 鉴于网络在安卓中的重要性与基础性,当今安卓开发者面临的问题之 ...
- Android Volley和Gson实现网络数据加载
Android Volley和Gson实现网络数据加载 先看接口 1 升级接口 http://s.meibeike.com/mcloud/ota/cloudService POST请求 参数列表如下 ...
- Gson 与 fastJson 在使用上的差异(fastJson的优点)
一.android 常用的json解析方式 Android 开发上常用的json解析方式有:Gson, fastJson,jackson. 因为jackjson jar包会比较大点(700+k),Gs ...
- 各个JSON技术的比较(Jackson,Gson,Fastjson)的对比
JSON技术的调研报告 一 .各个JSON技术的简介和优劣 1.json-lib json-lib最开始的也是应用最广泛的json解析工具,json-lib 不好的地方确实是依赖于很多第三方包, 包括 ...
- JSON解析工具比较,主要GSON和FastJSON
JSON解析工具比较,主要GSON和FastJSON 一 .各个JSON技术的简介和优劣 1.json-lib json-lib最开始的也是应用最广泛的json解析工具,json-lib 不好的地方确 ...
- 浅谈Gson和fastjson使用中的坑
相信大家在代码编写中都用过Gson和fastjson吧,用来进行 Java对象和json字符串之间的转换. 本篇文章就主要介绍博主在工作中使用这两款工具时遇到的坑和对应的解决办法. 觉得有用的可以点个 ...
- fastjson用法&Gson
<dependency> <groupId>com.google.code.gson</groupId> <artifactId>gson&l ...
- Android JSON 解析库的使用 - Gson 和 fast-json
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.它基于ECMAScript的一个子集. JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族 ...
随机推荐
- pythoy-生成器
生成器:只有在调用的时候才会生成相应的数据(调用到这个数据的时候才会生成这个数据,没有调用到时就没有这个数据)只记录数据的当前位置 生成器不能像普通的列表一样,通过下标或者切片的方式去取生成器只能通过 ...
- linux下寻找段错误的方法
为了能够快速找到发生段错误的地方,记录以下两种方法. objdump和backtrace的配合使用 :https://www.cnblogs.com/jiangyibo/p/9507555.html ...
- Go Example--递归
package main import "fmt" func main() { fmt.Println(fact(7)) } //函数的递归 func fact(n int) in ...
- MySQL数据库的学习
------------------------------------- 管理数据库PS: Mysql的管理 主要是包括 用户的管理. show........各种的信息 SHOW COLUMN ...
- Django中需要注意的点
需要注意的点 请求相关 注销的 用法 def logout(request): request.session.flush()#输入此内容可以注销用户登录信息 # 即将session信息清除掉 ret ...
- tomcat中配置https
HTTPS配置中分为单向连接和双向连接,单向连接只需要服务器安装证书,客户端不需要,双向连接需要服务器和客户端都安装证书: 一.Keytool命令: 1.生成密钥对: keytool -genkey ...
- 关于TF-IDF的解释
TF:term frequency ,词频 .指的是 term 出现的评率.词频和 2 个因数有关,在一个文档中出现这个词条次数越多,词频越高,文档总词条总数越多这个值被稀释. 所以 一般 TF = ...
- yii 分页查询
控制器 <?php namespace backend\controllers; use app\models\Comment; use app\models\Commentstatus; us ...
- java 泛型实现原理
泛型思想最早在C++语言的模板(Templates)中产生,Java后来也借用了这种思想.虽然思想一致,但是他们存在着本质性的不同. C++中的模板是真正意义上的泛型,在编译时就将不同模板类型参数编译 ...
- Tornado cookie 笔记
set_cookie()/get_cookie()的使用 def get(self): # self.get_cookie()获取cookie if not self.get_cookie('name ...