最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時(shí)間:2017年02月25日 14:21:26   投稿:lqh  
這篇文章主要介紹了Android getJSONObject與optJSONObject的區(qū)別,結(jié)合源碼分析的相關(guān)資料,需要的朋友可以參考下

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

json解析常見(jiàn)問(wèn)題:

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

源碼分析:

//使用getJSONObject時(shí),如果返回的對(duì)象不是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時(shí),當(dāng)返回結(jié)果不是JSONObject時(shí),這里不會(huì)拋異常,而是返回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)目代碼分析使用場(chǎ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 {
        // 請(qǐng)求獲取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");如果解析不到會(huì)直接返null
            if (activityItemList != null && activityItemList.size() > 0) {
              for (int j = 0; j < activityItemList.length(); j++) {

                //使用optJSONObject(i)會(huì)莫名解析不了下面數(shù)據(jù):如optString("activityId"));
                // 當(dāng)activityid為null時(shí),不會(huì)拋錯(cuò),但是下面的方法不走,因此換用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);
              }
 ...            
            }
        }

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

  • Android利用ZXing掃描二維碼的實(shí)例代碼解析

    Android利用ZXing掃描二維碼的實(shí)例代碼解析

    這篇文章主要介紹了Android利用ZXing掃描二維碼的實(shí)例解析,代碼簡(jiǎn)單易懂,非常不錯(cuò),需要的朋友可以參考下
    2016-12-12
  • Android自定義View實(shí)現(xiàn)數(shù)獨(dú)游戲

    Android自定義View實(shí)現(xiàn)數(shù)獨(dú)游戲

    這篇文章主要為大家詳細(xì)介紹了Android自定義View實(shí)現(xiàn)數(shù)獨(dú)游戲,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-12-12
  • Android檢查網(wǎng)絡(luò)狀態(tài)工具類詳解

    Android檢查網(wǎng)絡(luò)狀態(tài)工具類詳解

    這篇文章主要為大家詳細(xì)介紹了Android檢查網(wǎng)絡(luò)狀態(tài)工具類,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-04-04
  • Android計(jì)算器簡(jiǎn)單邏輯實(shí)現(xiàn)實(shí)例分享

    Android計(jì)算器簡(jiǎn)單邏輯實(shí)現(xiàn)實(shí)例分享

    這篇文章主要介紹了Android計(jì)算器簡(jiǎn)單邏輯實(shí)現(xiàn)實(shí)例,有需要的朋友可以參考一下
    2014-01-01
  • Flutter Navigator路由傳參的實(shí)現(xiàn)

    Flutter Navigator路由傳參的實(shí)現(xiàn)

    本文主要介紹了Flutter Navigator路由傳參的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-04-04
  • Android 多種dialog的實(shí)現(xiàn)方法(推薦)

    Android 多種dialog的實(shí)現(xiàn)方法(推薦)

    下面小編就為大家分享一篇Android 多種dialog的實(shí)現(xiàn)方法(推薦),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-01-01
  • Android 10 啟動(dòng)Init進(jìn)程解析

    Android 10 啟動(dòng)Init進(jìn)程解析

    這篇文章主要為大家介紹了Android 10 啟動(dòng)Init進(jìn)程解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-10-10
  • android內(nèi)存優(yōu)化之圖片優(yōu)化

    android內(nèi)存優(yōu)化之圖片優(yōu)化

    對(duì)圖片本身進(jìn)行操作。盡量不要使用setImageBitmap、setImageResource、BitmapFactory.decodeResource來(lái)設(shè)置一張大圖,因?yàn)檫@些方法在完成decode后,最終都是通過(guò)java層的createBitmap來(lái)完成的,需要消耗更多內(nèi)存
    2012-12-12
  • 打飛機(jī)游戲終極BOSS Android實(shí)戰(zhàn)打飛機(jī)游戲完結(jié)篇

    打飛機(jī)游戲終極BOSS Android實(shí)戰(zhàn)打飛機(jī)游戲完結(jié)篇

    打飛機(jī)游戲終極BOSS,Android實(shí)戰(zhàn)打飛機(jī)游戲完結(jié)篇,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-07-07
  • 最新評(píng)論

    乌兰县| 海晏县| 杭州市| 嘉鱼县| 湘潭市| 贵德县| 新乡县| 股票| 龙州县| 四平市| 毕节市| 卢龙县| 德州市| 南江县| 得荣县| 岳阳市| 犍为县| 白水县| 宣化县| 蕲春县| 永康市| 龙口市| 内黄县| 荣成市| 青阳县| 惠东县| 佛冈县| 阿巴嘎旗| 临清市| 鹿泉市| 黑河市| 深水埗区| 军事| 陇川县| 桑日县| 长沙市| 昌乐县| 白银市| 九寨沟县| 建德市| 水城县|