JSON字符串的拆解

首先说明一下Json字符串的拆解只支持第一级的节点;

需要拆解的字符串:

{
"time":{"endTime":"1404230813314","startTime":"1404130813314","bookId":"0"},
"addresses":[{"province":"jiangsu","country":"china"},{"province":"jiangsu","country":"china"}],
"page":["1","2","3","4","5","6","7","8"],
"ability":{"oralAbility":"0.00","starCount":"0.08","bookId":"0","growthAbility":"0.03","playedGame":["0","1"]},
"readPages":["1","2","3","4","5","6","7","8"]
}

直接上拆解的代码:

try {
//                    JSONObject page = data.getJSONObject("page");     //报错,只支持第一级节点的解析
                    //解析简单的JsonObject对象
                    JSONObject obj = data.getJSONObject("time");

                    Log.i(TAG, "" + obj.getInt("bookId"));
                    Log.i(TAG, "" + obj.getLong("startTime"));
                    Log.i(TAG, "" + obj.getLong("endTime"));
                    
                    
                    
                    //解析简单数组
                    JSONArray pages = data.getJSONArray("readPages");
                    for (int i = 0; i < pages.length(); i++) {
                        Log.i(TAG, "" + pages.optInt(i));
                    }
                    
                    //解析复杂数组
                    JSONArray addresses = data.getJSONArray("addresses");
                    for (int i = 0; i < addresses.length(); i++) {
                        Log.i(TAG, "" + addresses.optJSONObject(i).toString());
                        JSONObject jsonObject = addresses.optJSONObject(i);
                        Log.i(TAG, "" + jsonObject.getString("country"));
                        Log.i(TAG, "" + jsonObject.getString("province"));
                        
                    }
                } catch (JSONException e) {
                    e.printStackTrace();
                }

记忆方法:

对于拆解简单的JsonObject对象,我们就要分析,我们组合的时候,加入是键值对方法加入的。所以,我们就要通过键找到对应的JsonObject,然后通过相应的getInt,getString等等一些方法,取得相应的值。

对于拆解简单JSONArray对象,还是通过键,得到JSONArray对象,然后不断opt,得到各个值。

对于拆解复杂的JSONArray对象,还是通过键,得到JSONArray对象,然后,不断地optJSONObject对象。最后就是拆解简单的JSONObject对象了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值