zoukankan      html  css  js  c++  java
  • json学习系列(4)-JSONString对象的optXXX方法的使用

    在JSONObject获取value有多种方法,如果使用 getXxx()类型的方法获取value,如getString("key")。如果key不存在的话,这些方法无一例外的都会抛出异常。如果在线环境抛出异常,就会使出现error页面,影响用户体验,针对这种情况最好是使用JSONObject的optXXX方法。

    来看一下几个getXxx()方法的源代码实现:

    getString:如果key不存在,getString方法会抛出异常,如下所示:

    public String getString(String key)
        {
            verifyIsNull();
            Object o = get(key);
            if (o != null)
            {
                return o.toString();
            }
            throw new JSONException("JSONObject[" + JSONUtils.quote(key) + "] not found.");
        }

    getInt:如果key不存在,getInt方法会抛出异常,如下所示:

     public int getInt(String key)
        {
            verifyIsNull();
            Object o = get(key);
            if (o != null)
            {
                return o instanceof Number ? ((Number) o).intValue() : (int) getDouble(key);
            }
            throw new JSONException("JSONObject[" + JSONUtils.quote(key) + "] is not a number.");
        }

    getDouble:如果key不存在,getDouble方法会抛出异常,如下所示:

    public double getDouble(String key)
        {
            verifyIsNull();
            Object o = get(key);
            if (o != null)
            {
                try
                {
                    return o instanceof Number ? ((Number) o).doubleValue() : Double.parseDouble((String) o);
                }
                catch (Exception e)
                {
                    throw new JSONException("JSONObject[" + JSONUtils.quote(key) + "] is not a number.");
                }
            }
            throw new JSONException("JSONObject[" + JSONUtils.quote(key) + "] is not a number.");
     
        }

    getBoolean:如果key不存在,getBoolean方法会抛出异常,如下所示:

    public boolean getBoolean(String key)
        {
            verifyIsNull();
            Object o = get(key);
            if (o != null)
            {
                if (o.equals(Boolean.FALSE) || (o instanceof String && ((String) o).equalsIgnoreCase("false")))
                {
                    return false;
                }
                else if (o.equals(Boolean.TRUE) || (o instanceof String && ((String) o).equalsIgnoreCase("true")))
                {
                    return true;
                }
            }
            throw new JSONException("JSONObject[" + JSONUtils.quote(key) + "] is not a Boolean.");
        }

    JSONObject有很多optXXX方法,比如optBoolean,optString,optInt。可以看这些方法源码的实现知道,如果JsonObject有这个属性,则返回这个属性,否则返回一个默认值。下面以optString方法为例说明一下其底层实现过程:

    public String optString(String key)
        {
            verifyIsNull();
            return optString(key, "");
        }

    上面的例子表示如果key值不存在,则返回空字符串。

    public String optString(String key, String defaultValue)
        {
            verifyIsNull();
            Object o = opt(key);
            return o != null ? o.toString() : defaultValue;
        }

    上面的例子表示如果key值不存在,则返回默认值defaultValue

  • 相关阅读:
    iOS- 优化与封装 APP音效的播放
    iOS- iPhone App 如何运营?
    iOS- 封装单例宏
    iOS- 详解文本属性Attributes
    iOS- 如何将应用集成发短信、发邮件、打电话
    iOS- <项目笔记> UIApplication常见属性与方法总结
    iOS- <项目笔记>iOS6 & iOS7屏幕图片适配
    iOS- <项目笔记>项目配置常见文件
    iOS- <项目笔记>UI控件常见属性总结
    iOS- UIPickerView餐厅点餐系统
  • 原文地址:https://www.cnblogs.com/longshiyVip/p/4607919.html
Copyright © 2011-2022 走看看