栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 移动开发 > Android

Android getJSONObject与optJSONObject的区别结合源码分析

Android 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Android getJSONObject与optJSONObject的区别结合源码分析

Android getJSONObject与optJSONObject的区别结合源码分析

json解析常见问题:

getJSONObject与optJSONObject的区别,下面结合源码和案例来分析当我们使用这两周方法来解析数据时,哪种比较好.

源码分析:

//使用getJSONObject时,如果返回的对象不是JSONObject,抛出JSONException异常
  

  public JSonObject getJSonObject(String name) throws JSonException {
    Object object = get(name);
    if (object instanceof JSONObject) {
      return (JSONObject) object;
    } else {
      throw JSON.typeMismatch(name, object, "JSONObject");
    }
  }



//使用optJSONObject时,当返回结果不是JSONObject时,这里不会抛异常,而是返回null
  
  public JSonObject optJSonObject(String name) {
    Object object = opt(name);
    return object instanceof JSonObject ? (JSONObject) object : null;
  }

结合项目代码分析使用场景

 
  public class GetGoodsCollectListFactory {
    private String ERROR_MSG = "errorMsg";
    private String ERROR_CODE = "errorCode";
    private String RESULT   = "result";

    
    public CollectListInfo getGoodsCollectListParse(String param) {
      String BOOK_MARK_BO_LIST = "favorGoodsList";
      CollectListInfo collectList = new CollectListInfo();
      List list = new ArrayList();
      ResponseInfo responseInfo = null;
      CollectInfo info = null;
      try {
 // 请求获取json结果
 JSonObject jsonObject = new JSonObject(HttpRequestClient.executeRequest(Constant.Url.GET_FOLLOW_GOODS_URL, param, true));
 responseInfo = new ResponseInfo();
 if (jsonObject.getBoolean(RESULT)) {
   responseInfo.setResult(true);
   JSonArray jsonArray = jsonObject.getJSonArray(BOOK_MARK_BO_LIST);
   collectList.setTotalPage(jsonObject.getInt(Constant.TOTAL_PAGE_NAME));
   for (int i = 0; i < jsonArray.length(); i++) {
     info = collectList.getCollectInfo();
     SonObject object = jsonArray.getJSonObject(i);
     JSonArray activityItemList = object.optJSonArray("activityItemList");
     ArrayList activityCollectInfos = new ArrayList();

     //因为object.optJSonArray("activityItemList");如果解析不到会直接返null
     if (activityItemList != null && activityItemList.size() > 0) {
for (int j = 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 = new ActivityCollectInfo();
  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);
}
 ...     
     }
 }

温故而知新,可以为师矣.

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/159649.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号