JSON

Android 学习笔记之Volley(七)实现Json数据加载和解析...

字号+ 作者:H5之家 来源:H5之家 2017-05-28 11:01 我要评论( )

学习内容:1.使用Volley实现异步加载Json数据... Volley的第二大请求就是通过发送请求异步实现Json数据信息的加载,加载Json数据有两种方式,一种是通过获取Jso

 

 

学习内容:

1.使用Volley实现异步加载Json数据...

 

  Volley的第二大请求就是通过发送请求异步实现Json数据信息的加载,加载Json数据有两种方式,一种是通过获取Json对象,然后对对象进行解析,从而获取Json数据,另一种方式则是通过获取JsonArray的方式来对Json数据进行解析,其实就是Json数组...由于Json数据格式的不同,因此也就有了这两种方式...

  因此实现类也就成为了两个JsonObjectRequest.java和JsonArrayRequest.java,他们都 extends JsonRequest,而JsonRequest继承了Request类,重写了其中内部的一些方法...因为获取Json对象,提交这个请求已经是一个确定好的类型,因此需要对父类中的一些方式进行重写...Request只是为更多的请求方式提供了一个父类,其他类型的请求,需要使用新的类进行继承,重写,然后子类再充当父类,用新的子类进行继承和重写...从而实现了良好的扩展....

  那么JsonRequest为什么没有实现parseNetWorkResponse想必也就不用说了,对外提供接口,方便扩展和实现...

  我们先看看第一种,使用Volley获取JsonObject,从而解析获取Json数据...

1.JsonObjectRequest.java

  这里的源码就非常的简单了,没什么太多可说的...关键还是看如何调用...

package com.android.volley.toolbox; import com.android.volley.NetworkResponse; import com.android.volley.ParseError; import com.android.volley.Response; import com.android.volley.Response.ErrorListener; import com.android.volley.Response.Listener; import org.json.JSONException; import org.json.JSONObject; import java.io.UnsupportedEncodingException; public class JsonObjectRequest extends JsonRequest<JSONObject> { JsonObjectRequest(int method, String url, JSONObject jsonRequest, Listener<JSONObject> listener, ErrorListener errorListener) { super(method, url, (jsonRequest == null) ? null : jsonRequest.toString(), listener, errorListener); } JsonObjectRequest(String url, JSONObject jsonRequest, Listener<JSONObject> listener, ErrorListener errorListener) { this(jsonRequest == null ? Method.GET : Method.POST, url, jsonRequest, listener, errorListener); } @Override protected Response<JSONObject> parseNetworkResponse(NetworkResponse response) { try { String jsonString = Response.success(new JSONObject(jsonString),//返回成功数据... HttpHeaderParser.parseCacheHeaders(response)); } catch (UnsupportedEncodingException e) { return Response.error(new ParseError(e)); } catch (JSONException je) { return Response.error(new ParseError(je)); } } }

  调用的方式我们还是通过例子来完成...这里我们通过请求来获取Json数据...

  :8080/JSP/Json_1.txt是这个样子的...简单的Json数据...

{ "user":[ {"userid":"1","username":"darker","userpassword":"49681888"}, {"userid":"2","username":"darker_1","userpassword":"49681888"}, {"userid":"3","username":"darker_2","userpassword":"49681888"} ] }

   下面通过请求完成调用,获取其中的内容...

package com.example.oop; import com.android.volley.RequestQueue; import com.android.volley.toolbox.Volley; import android.os.Bundle; import android.app.Activity; import android.view.Menu; import android.view.View; public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); init(); } public void init(){ RequestQueue queue=Volley.newRequestQueue(MainActivity.this); //这里没有重写错误方法...正常来说是需要重写的... mqueue.add(new JsonObjectRequest(Method.GET,"http://192.168.199.172:8080/JSP/Json_1.txt",url,new Listener<JSONObject>(){ @Override public void Response(JSONObject response){ //这里我们可以看到我们获取的就是JsonObject了...我们可以在这里进行解析,从而获取想要的数据... List<HasnMap<String,String>>list=new ArrayList<HashMap<String,String>>(); String s[]=new String[]{"userid","username","userpassword"}; try{ JSONArray array=response.getJSONArray("user"); for(int i=0;i<array.size();i++){ JSONObject object=array.opt(i); Map<String,String>map=new HashMap<String,String>(); for(String str:s){ map.put(str,object.get(str)); } list.add(map); for(int i=0;i<list.size();i++){ for(int j=0;j<Json_id.length;j++){ System.out.println(list.get(i).get(Json_id[j])); } } } }catch(Exception e){} } })); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } }

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • Android读取本地json文件的方法(解决显示乱码问题)

    Android读取本地json文件的方法(解决显示乱码问题)

    2017-05-20 09:00

  • Android读取本地json文件的方法(解决显示乱码问题)

    Android读取本地json文件的方法(解决显示乱码问题)

    2017-05-18 10:00

  • Android json解析动态获取key以及解析技巧

    Android json解析动态获取key以及解析技巧

    2017-05-17 10:02

  • 如何反序列化的JSON / GSON这可能是一个字符串,对象或列表

    如何反序列化的JSON / GSON这可能是一个字符串,对象或列表

    2017-05-12 15:18

网友点评