JSON

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

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

通过Json对象,来解析Json数据的方式其实有很多种方式,这里我只列举了一个,通过把JsonObject转化成JsonArray的形式,然后对数组进行遍历,从而获取每一个数据信息...更多的方式我在博客中也进行了书写,大家可以

  通过Json对象,来解析Json数据的方式其实有很多种方式,这里我只列举了一个,通过把JsonObject转化成JsonArray的形式,然后对数组进行遍历,从而获取每一个数据信息...更多的方式我在博客中也进行了书写,大家可以去看看Android学习笔记之Json的使用...这是第一种通过获取JsonObject从而获取Json数据信息的...

  第二种方式:

2.JsonArrayRequest.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.JSONArray; import org.json.JSONException; import java.io.UnsupportedEncodingException; public class JsonArrayRequest extends JsonRequest<JSONArray> { JsonArrayRequest(String url, Listener<JSONArray> listener, ErrorListener errorListener) { super(Method.GET, url, null, listener, errorListener); } @Override protected Response<JSONArray> parseNetworkResponse(NetworkResponse response) { try { String jsonString = new String(response.data, HttpHeaderParser.parseCharset(response.headers)); return Response.success(new JSONArray(jsonString), HttpHeaderParser.parseCacheHeaders(response)); } catch (UnsupportedEncodingException e) { return Response.error(new ParseError(e)); } catch (JSONException je) { return Response.error(new ParseError(je)); } } }

  看一下具体的调用过程...

  :8080/JSP/JSON.txt的数据信息如下..

[ {"firstName":"Brett","lastName":"McLaughlin","email":"aaaa"}, {"firstName":"Jason","lastName":"Hunter","email":"bbbb"}, {"firstName":"Elliotte","lastName":"Harold","email":"cccc"} ]

  主函数的调用过程...有一些包没有引入,到时候书写时编译器会自动引入的...

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{ String url="http://192.168.199.172:8080/JSP/JSON.txt"; @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 JsonArrayRequest(url, new Listener<JSONArray>() { @Override public void OnResponse(JsonArray response){ { for(int i=0;i<response.length;i++){ JsonObject object=(JsonObject)response.opt(i); Map<String,Object>map=new HashMap<String,Object>(); 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<s.length;j++){ System.out.println(list.get(i).get(s[j])); } } }catch(Exception e){} } }, new ErrorListener() { @Override public void onErrorResponse(VolleyError error){ //TODO Auto-generated method stub System.out.println(error.toString()); } })); } @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; } }

  这里当请求成功之后,获取到的响应就是JsonArray对象了...然后通过遍历就直接能够获取到JsonArray里保存的数据信息了...这就是解析的另一种方式...直接获取Json数组...从而获取数据信息...

  JsonArrayRequest方式和JsonObjectRequest方式模式基本是相同的...只是对Json的数据格式要求并不一样...只需在Json的格式上发生以下简单的变化...

  JsonArrayRequest请求的Json数据格式[{},{}]...返回的形式是Json数组..

  JsonObjectRequest请求的Json数据格式["名称":[{},{}]]...返回的形式是Json对象..

  这样就完成了Json数据的获取+解析..获取过程由Volley实现,解析由我们去实现...

最后我们来看一下父类的源代码...

3.JsonRequest.java

 

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

网友点评
(