android端Jackson解析json
2015-08-07 23:14
585 查看
1、 前面的日志介绍了如何读取json,下面继续介绍如何解析json,之前采用的opt方法有一个缺陷,如果对象值为空的时候,容易出现获取异常。所以应该改变之前的解析方式。
2、 Json主要是map和list的混合,获取的json有几种类型:
A:单一的jsonObject
B:单一的jsonArray
C:混合的模式,jsonObject里面包含jsonArray,或者jsonArray里面包含jsonObject
3、 本例子中采用的是volley里面获取jsonObject对象的方法,所以主要演示 jsonObject对象的解析,但是包含了jsonArray,下面演示一下:
首先在jackson官网下载jar包,添加到libs里面,http://wiki.fasterxml.com/JacksonDownload
A:Json数据的格式如下:
{“findandlost”:[{“category”:”包”,”content”:”本人于2014年3月4日文泰201丢失黑色冒牌苹果钱包,内有身份证及几张银行卡。望有好心人捡到与本人联系,本人学号1109020234 刘芳,必有重谢!联系电话 18702872345”,”createTime”:”2014-03-05 10:47:35”,”flag”:”寻物”,”loastandfindId”:”01”,”name”:”刘芳”,”state”:”寻物”},{“category”:”包”,”content”:”本人1月29日在文波将一挎肩包遗失在坐上,包内有驾驶证、钱包、身份证银行卡等物品。有拾到者请于本人联系,本人学号1109020247 林强,愿意1000元现金作为酬谢。联系电话 18702872387”,”createTime”:”2014-01-29 10:47:40”,”flag”:”寻物”,”loastandfindId”:”02”,”name”:”刘芳”,”state”:”寻物”}]}
B:解析的源代码:
private void getJson(){
//将jsonArray转换为list
C:在前端获取到的效果:
D:解析以后的效果:
4、 如果是jsonObject对象,直接映射为map
Map
2、 Json主要是map和list的混合,获取的json有几种类型:
A:单一的jsonObject
B:单一的jsonArray
C:混合的模式,jsonObject里面包含jsonArray,或者jsonArray里面包含jsonObject
3、 本例子中采用的是volley里面获取jsonObject对象的方法,所以主要演示 jsonObject对象的解析,但是包含了jsonArray,下面演示一下:
首先在jackson官网下载jar包,添加到libs里面,http://wiki.fasterxml.com/JacksonDownload
A:Json数据的格式如下:
{“findandlost”:[{“category”:”包”,”content”:”本人于2014年3月4日文泰201丢失黑色冒牌苹果钱包,内有身份证及几张银行卡。望有好心人捡到与本人联系,本人学号1109020234 刘芳,必有重谢!联系电话 18702872345”,”createTime”:”2014-03-05 10:47:35”,”flag”:”寻物”,”loastandfindId”:”01”,”name”:”刘芳”,”state”:”寻物”},{“category”:”包”,”content”:”本人1月29日在文波将一挎肩包遗失在坐上,包内有驾驶证、钱包、身份证银行卡等物品。有拾到者请于本人联系,本人学号1109020247 林强,愿意1000元现金作为酬谢。联系电话 18702872387”,”createTime”:”2014-01-29 10:47:40”,”flag”:”寻物”,”loastandfindId”:”02”,”name”:”刘芳”,”state”:”寻物”}]}
B:解析的源代码:
private void getJson(){
String url = "http://192.168.20.1:8080/xiaoyuantong/findandlostAction!getFindAndLostAll.action"; JsonObjectRequest jsonObjectRequest = new JsonObjectRequest( Request.Method.GET, url, null, new Response.Listener<JSONObject>() { @Override public void onResponse(JSONObject response) { Log.e("bbb", response.toString()); ObjectMapper objectMapper = new ObjectMapper(); JSONArray json = null; try { //直接获取了jsonArray json = response.getJSONArray("findandlost");
//将jsonArray转换为list
List<LinkedHashMap<String, Object>> list = objectMapper.readValue(json.toString(), List.class); System.out.println(list.size()); for (int i = 0; i < list.size(); i++) { Map<String, Object> map = list.get(i); Set<String> set = map.keySet(); for (Iterator<String> it = set.iterator();it.hasNext();) { String key = it.next(); System.out.println(key + ":" + map.get(key)); } } } catch (JSONException e) { // TODO Auto-generated catch block e.printStackTrace(); } //根据前面的标注获取字符串 catch (JsonParseException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (JsonMappingException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError arg0) { // System.out.println("sorry,Error"); Log.e("aaa", arg0.toString()); } }); requestQueue.add(jsonObjectRequest); }
C:在前端获取到的效果:
D:解析以后的效果:
4、 如果是jsonObject对象,直接映射为map
Map
相关文章推荐
- android 百度地图坐标类型setCoorType
- Study-android 各种dialog的学习总结
- Android:view常用属性和操作方法
- Android应用:自定义SurfaceView
- android 常用
- 浅谈Android Fragment嵌套使用存在的一些BUG以及解决方法
- Android指南针之加速度传感器地磁传感器-android学习之旅(67)
- Android指南针之加速度传感器地磁传感器-android学习之旅(67)
- Android指南针之加速度传感器地磁传感器-android学习之旅(67)
- Android指南针之加速度传感器地磁传感器-android学习之旅(67)
- Android ListView&异步加载的学习(四)——完善ListView滑动效率问题
- Android(java)学习笔记144:Android音视频录制类MediaRecorder用法举例
- Android Pitfall - 扒一扒RadioGroup 和 RadioButton
- Android菜单menu控件大全
- android常见错误汇总
- 解决Android真机设备调试时LogCat的日志无法输出的问题
- 浅析android 四大布局
- android 开发者选项
- Android的加速度传感器模拟摇一摇的效果-android学习之旅(66)
- Android的加速度传感器模拟摇一摇的效果-android学习之旅(66)