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对象了。


版权声明:本文为u014552288原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。