Android开发 Volley通讯与Gson解析

最近的项目里要用到解析接口传来的JsonArray.

这玩意虽然都已经做了很多遍了,老方法就是用HttpUrlConnection或者HttpClient封装好一个SendPost.给接口发请求,看着数据里的"[...]"来一个JsonArray对象,看见","来一个JsonObject对象,转成一个个的Bean数据实体就OK了。

但今天想换个前卫一点的方法,用了一次著名网络框架Volley和谷歌自己的Json解析库Gson,让我觉得整个世界都轻松了许多。

首先介绍一下这两个著名的框架。

1.Volley

在Volley之前,我们在程序中需要和网络通信的时候,大体使用的东西莫过于AsyncTaskLoader,HttpURLConnection,AsyncTask,HTTPClient(Apache)等,今年的 Google I/O 2013上,Volley发布了。Volley是Android平台上的网络通信库,能使网络通信更快,更简单,更健壮。
这是Volley名称的由来: a burst or emission of many things or a large amount at once

Volley提供的功能
简单来说,它提供了如下的便利功能:

  • JSON,图像等的异步下载;
  • 网络请求的排序(scheduling)
  • 网络请求的优先级处理
  • 缓存
  • 多级别取消请求
  • 和Activity和生命周期的联动(Activity结束时同时取消所有网络请求)

2.Gson

Gson 是 Google 提供的用来在 Java 对象和 JSON 数据之间进行映射的 Java 类库。可以将一个 JSON 字符串转成一个 Java 对象,或者反过来。

jar和源码下载地址: http://code.google.com/p/google-gson/downloads/list

 

在项目中,我使用Volley进行对接口的网络通信。获取数据后,用Gson解析。

Volley的强大之处。

private void getNetData(){
		RequestQueue requestQueue = Volley.newRequestQueue(getApplicationContext());
		StringRequest stringRequest = new StringRequest(Request.Method.POST,URL,
		    new Response.Listener<String>() {
		        @Override
		        public void onResponse(String response) {
		            Log.d("re", "response -> " + response);
		            arrayList.addAll((ArrayList<NetSongBean>)gson.fromJson(response, new TypeToken<ArrayList<NetSongBean>>(){}.getType()));
		            musicListAdapter=new MusicListAdapter(arrayList);
		            musicListView.setAdapter(musicListAdapter);
		            onLoad();
		        }
		    }, new Response.ErrorListener() {
		        @Override
		        public void onErrorResponse(VolleyError error) {
		            Log.e("er", error.getMessage(), error);
		        }
		    }) {
		    @Override
		    protected Map<String, String> getParams() {
		        //在这里设置需要post的参数
		              Map<String, String> map = new HashMap<String, String>();  
		            map.put("page", page+"");  
		          return map;
		    }
		};        
		requestQueue.add(stringRequest);
	}

在参数设置,请求成功与请求失败的处理上,Volley极其的简洁以及高效。

貌似还能异步加载图片。

加载图片的话还有一个神一样存在的Glide,下次再说。

2.Gson

再说Gson.


 arrayList.addAll((ArrayList<NetSongBean>)gson.fromJson(response, new TypeToken<ArrayList<NetSongBean>>(){}.getType()));

一句话干了以前for循环加JsonObject解析多少行的事情。

gson.fromJson一句便可以将一个JsonArray的字符串转化为装着Bean的ArrayList.

项目中用到的在此就介绍完了。


我已经把两个jar包上传

Volley: http://download.csdn.net/detail/lizhaowei213/9300851

Gson: http://download.csdn.net/detail/lizhaowei213/9300853



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值