最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
Android getJSONObject与optJSONObject的区别结合源码分析
时间:2017-05-03 编辑:简简单单 来源:一聚教程网
Android getJSONObject与optJSONObject的区别结合源码分析
json解析常见问题:
getJSONObject与optJSONObject的区别,下面结合源码和案例来分析当我们使用这两周方法来解析数据时,哪种比较好.
源码分析:
代码如下 | 复制代码 |
//使用getJSONObject时,如果返回的对象不是JSONObject,抛出JSONException异常 /** * Returns the value mapped by {@code name} if it exists and is a {@code * JSONObject}. * @throws JSONException if the mapping doesn't exist or is not a {@code * JSONObject}. */
publicJSONObject getJSONObject(String name)throwsJSONException { Object object = get(name); if(objectinstanceofJSONObject) { return(JSONObject) object; }else{ throwJSON.typeMismatch(name, object,"JSONObject"); } }
//使用optJSONObject时,当返回结果不是JSONObject时,这里不会抛异常,而是返回null /** * Returns the value mapped by {@code name} if it exists and is a {@code * JSONObject}. Returns null otherwise. */ publicJSONObject optJSONObject(String name) { Object object = opt(name); returnobjectinstanceofJSONObject ? (JSONObject) object :null; } |
结合项目代码分析使用场景
代码如下 | 复制代码 |
/** * 伪代码如下 **/ publicclassGetGoodsCollectListFactory { privateString ERROR_MSG ="errorMsg"; privateString ERROR_CODE ="errorCode"; privateString RESULT ="result";
/** * 商品列表,解析获取到的json数据 * * @param param * @return */ publicCollectListInfo getGoodsCollectListParse(String param) { String BOOK_MARK_BO_LIST ="favorGoodsList"; CollectListInfo collectList =newCollectListInfo(); List ResponseInfo responseInfo =null; CollectInfo info =null; try{ // 请求获取json结果 JSONObject jsonObject =newJSONObject(HttpRequestClient.executeRequest(Constant.Url.GET_FOLLOW_GOODS_URL, param,true)); responseInfo =newResponseInfo(); if(jsonObject.getBoolean(RESULT)) { responseInfo.setResult(true); JSONArray jsonArray = jsonObject.getJSONArray(BOOK_MARK_BO_LIST); collectList.setTotalPage(jsonObject.getInt(Constant.TOTAL_PAGE_NAME)); for(inti =0; i < jsonArray.length(); i++) { info = collectList.getCollectInfo(); SONObject object = jsonArray.getJSONObject(i); JSONArray activityItemList = object.optJSONArray("activityItemList"); ArrayList
//因为object.optJSONArray("activityItemList");如果解析不到会直接返null if(activityItemList !=null&& activityItemList.size() >0) { for(intj =0; j < activityItemList.length(); j++) {
//使用optJSONObject(i)会莫名解析不了下面数据:如optString("activityId")); // 当activityid为null时,不会抛错,但是下面的方法不走,因此换用getJSONObject(i); //JSONObject activityItemobj = activityItemList.optJSONObject(i);
JSONObject activityItemobj = activityItemList.getJSONObject(i); ActivityCollectInfo activityCollectInfo =newActivityCollectInfo(); activityCollectInfo.setActivityId(activityItemobj.optString("activityId")); activityCollectInfo.setActivityName(activityItemobj.optString("activityName")); activityCollectInfo.setActivityType(activityItemobj.optInt("activityType")); activityCollectInfo.setLargessFlag(activityItemobj.optInt("largessFlag")); activityCollectInfo.setLargessMoney(activityItemobj.optInt("largessMoney")); activityCollectInfo.setLargessNumber(activityItemobj.optInt("largessNumber")); activityCollectInfos.add(activityCollectInfo); } ... } } |
温故而知新,可以为师矣.
-
上一个: Android如何设置圆角图片
相关文章
- sora软件价格介绍 02-22
- sora官网入口地址一览 02-22
- Sora生成的视频使用教程 02-22
- 《梦幻西游》元宵灯谜线索答案大全2024 02-22
- 《原神》有朋自远方来第一天通关攻略 02-22
- 《苏醒之路》四个结局达成攻略 02-22