android端Jackson解析json

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(){

 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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值