首先说明一下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对象了。