成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

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

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

南山網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián),南山網(wǎng)站設(shè)計制作,有大型網(wǎng)站制作公司豐富經(jīng)驗。已為南山千余家提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\成都外貿(mào)網(wǎng)站建設(shè)要多少錢,請找那個售后服務(wù)好的南山做網(wǎng)站的公司定做!

json解析常見問題:

getJSONObject與optJSONObject的區(qū)別,下面結(jié)合源碼和案例來分析當我們使用這兩周方法來解析數(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時,當返回結(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é)合項目代碼分析使用場景

 /**
  * 偽代碼如下
  **/
  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>();

            //因為object.optJSONArray("activityItemList");如果解析不到會直接返null
            if (activityItemList != null && activityItemList.size() > 0) {
              for (int j = 0; j < activityItemList.length(); j++) {

                //使用optJSONObject(i)會莫名解析不了下面數(shù)據(jù):如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);
              }
 ...            
            }
        }

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

分享標題:AndroidgetJSONObject與optJSONObject的區(qū)別結(jié)合源碼分析
文章URL:http://jinyejixie.com/article34/iisipe.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供軟件開發(fā)、企業(yè)建站、網(wǎng)站營銷、域名注冊、ChatGPT、動態(tài)網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站建設(shè)網(wǎng)站維護公司
桐乡市| 乌恰县| 夏津县| 女性| 临武县| 宝坻区| 兴和县| 五大连池市| 天峨县| 越西县| 陈巴尔虎旗| 莆田市| 杭锦旗| 宽城| 南投县| 义马市| 东乌珠穆沁旗| 绥棱县| 凌源市| 玉屏| 潼南县| 徐水县| 天等县| 东乡| 龙口市| 凌海市| 长沙市| 赫章县| 溧水县| 泗水县| 益阳市| 册亨县| 饶平县| 武山县| 贵阳市| 和硕县| 高雄县| 明星| 离岛区| 香港 | 东源县|