国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統(tǒng) > Android > 正文

Android getJSONObject與optJSONObject的區(qū)別結(jié)合源碼分析

2019-12-12 03:36:11
字體:
供稿:網(wǎng)友

Android getJSONObject與optJSONObject的區(qū)別結(jié)合源碼分析

json解析常見問題:

getJSONObject與optJSONObject的區(qū)別,下面結(jié)合源碼和案例來分析當(dāng)我們使用這兩周方法來解析數(shù)據(jù)時,哪種比較好.

源碼分析:

//使用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}.   */  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時,當(dāng)返回結(jié)果不是JSONObject時,這里不會拋異常,而是返回null  /**   * Returns the value mapped by {@code name} if it exists and is a {@code   * JSONObject}. Returns null otherwise.   */  public JSONObject optJSONObject(String name) {    Object object = opt(name);    return object instanceof JSONObject ? (JSONObject) object : null;  }

結(jié)合項(xiàng)目代碼分析使用場景

 /**  * 偽代碼如下  **/  public class GetGoodsCollectListFactory {    private String ERROR_MSG = "errorMsg";    private String ERROR_CODE = "errorCode";    private String RESULT   = "result";    /**     * 商品列表,解析獲取到的json數(shù)據(jù)     *     * @param param     * @return     */    public CollectListInfo getGoodsCollectListParse(String param) {      String BOOK_MARK_BO_LIST = "favorGoodsList";      CollectListInfo collectList = new CollectListInfo();      List<CollectInfo> list = new ArrayList<CollectInfo>();      ResponseInfo responseInfo = null;      CollectInfo info = null;      try {        // 請求獲取json結(jié)果        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<ActivityCollectInfo> activityCollectInfos = new ArrayList<ActivityCollectInfo>();            //因?yàn)閛bject.optJSONArray("activityItemList");如果解析不到會直接返null            if (activityItemList != null && activityItemList.size() > 0) {              for (int j = 0; j < activityItemList.length(); j++) {                //使用optJSONObject(i)會莫名解析不了下面數(shù)據(jù):如optString("activityId"));                // 當(dāng)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);              } ...                        }        }

溫故而知新,可以為師矣.

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 锡林郭勒盟| 望城县| 明星| 嘉义县| 通山县| 同德县| 杭州市| 衡阳县| 南皮县| 柘城县| 嘉禾县| 松阳县| 耿马| 西乌| 遂溪县| 井陉县| 会理县| 苍南县| 八宿县| 醴陵市| 北海市| 乐东| 莱芜市| 贡觉县| 清涧县| 邳州市| 南陵县| 古浪县| 阿图什市| 临猗县| 额济纳旗| 闸北区| 彭阳县| 天柱县| 塔河县| 松潘县| 米泉市| 新和县| 新和县| 西昌市| 南华县|