欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > 文章正文

Android开发中json数据解析工具类,androidjson,用Android自带的J

来源: javaer 分享于  点击 46251 次 点评:81

Android开发中json数据解析工具类,androidjson,用Android自带的J


用Android自带的JSONArray及JSONObject处理json数据---------------------------------------------------------------- 在下面方法中传入的String path是数据所在的服务器url地址

public class dealJsonUtil { / 获取"数组形式"的JSON数据, /publicstaticList<Map<String,String>>getJSONArray(Stringpath)throwsException{Stringjson=null;List<Map<String,String>>list=newArrayList<Map<String,String>>();Map<String,String>map=null;URLurl=newURL(path);/HttpURLConnection对象,从网络中获取网页数据*/HttpURLConnectionconn=(HttpURLConnection)url.openConnection();/设置超时时间为5秒/conn.setConnectTimeout(51000);/HttpURLConnection是通过HTTP协议请求path路径的,所以需要设置请求方式,可以不设置,因为默认为GET*/conn.setRequestMethod("GET");/判断请求是否成功,成功时请求码为200,否则失败/if(conn.getResponseCode()==200){/获取数据输入流*/InputStreamis=conn.getInputStream();/把输入流转换成字符数组/byte[]data=readStream2Array(is);/字符数组转换成字符串/json=newString(data);/ 数据形式:[{"stuNo":100,"name":"小明"},{"stuNo":101,"name":"小张"}]数据为数组形式,直接用android框架 JSONArray读取数据,转换成Array /JSONArrayjsonArray=newJSONArray(json);for(inti=0;i<jsonArray.length();i++){/获取每条数据中的对象/JSONObjectitem=jsonArray.getJSONObject(i);/*注意key值要一致/intid=item.getInt("stuNo");Stringname=item.getString("name");map=newHashMap<String,String>();map.put("stuNo",id+"");map.put("name",name);list.add(map);}}returnlist;}

/
获取"对象形式"的JSON数据,
*
@parampath 网页路径
@return 返回List
@throwsException
/publicstaticList<Map<String,String>>getJSONObject(Stringpath)throwsException{List<Map<String,String>>list=newArrayList<Map<String,String>>();Map<String,String>map=null;URLurl=newURL(path);HttpURLConnectionconn=(HttpURLConnection)url.openConnection();conn.setConnectTimeout(51000);//单位是毫秒,设置超时时间为5秒conn.setRequestMethod("GET");if(conn.getResponseCode()==200){InputStreamis=conn.getInputStream(); byte[]data=readStream2Array(is);Stringjson=newString(data);/ 数据形式:{"total":2,"success":true,"arrayData":[{"id":1,"name":"小猪"},{"id":2,"name":"小猫"}]}
返回的数据形式是一个Object类型,所以可以直接转换成一个Object/JSONObjectjsonObject=newJSONObject(json);inttotal=jsonObject.getInt("total");Booleansuccess=jsonObject.getBoolean("success");/
json对象中有一个数组数据,又可以使用getJSONArray获取数组*/JSONArrayjsonArray=jsonObject.getJSONArray("arrayData");for(inti=0;i<jsonArray.length();i++){JSONObjectitem=jsonArray.getJSONObject(i);intid=item.getInt("id"); Stringname=item.getString("name");map=newHashMap<String,String>(); map.put("id",id+"");map.put("name",name);list.add(map);}}returnlist;}

/
获取类型复杂的JSON数据
/publicstaticList<Map<String,String>>getComplexJSON(Stringpath)throwsException{List<Map<String,String>>list=newArrayList<Map<String,String>>();Map<String,String>map=null;URLurl=newURL(path);HttpURLConnectionconn=(HttpURLConnection)url.openConnection();conn.setConnectTimeout(51000); conn.setRequestMethod("GET");if(conn.getResponseCode()==200){InputStreamis=conn.getInputStream(); byte[]data=readStream2Array(is);Stringjson=newString(data);/ 数据形式:{"name":"小猪","age":23,"content":{"questionsTotal":2,"questions":[{"question":"what'syourname?", "answer":"小猪"},{"question":"what'syourage","answer":"23"}]}} /JSONObjectjsonObject=newJSONObject(json);Stringname=jsonObject.getString("name");intage=jsonObject.getInt("age");Log.i("abc","name:"+name+"|age:"+age); JSONObjectcontentObject=jsonObject.getJSONObject("content");StringquestionsTotal=contentObject.getString("questionsTotal");JSONArraycontentArray=contentObject.getJSONArray("questions");for(inti=0;i<contentArray.length();i++){JSONObjectitem=contentArray.getJSONObject(i); Stringquestion=item.getString("question"); Stringanswer=item.getString("answer");map=newHashMap<String,String>(); map.put("question",question);map.put("answer",answer);list.add(map);}}returnlist;}

/
把输入流转换成字符数组

/publicstaticbyte[]readStream2Array(InputStreaminputStream)throwsException{ByteArrayOutputStreambout=newByteArrayOutputStream();byte[]buffer=newbyte[1024];intlen=0;while((len=inputStream.read(buffer))!=-1){bout.write(buffer,0,len);}bout.close();inputStream.close();returnbout.toByteArray();}}

相关栏目:

用户点评