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

  • 相关阅读:
    matlab cell
    matlab linux 快捷键设置——有问题还是要解决
    latex 小结
    TOJ 1258 Very Simple Counting
    TOJ 2888 Pearls
    HDU 1248 寒冰王座
    TOJ 3486 Divisibility
    TOJ 3635 过山车
    TOJ 1840 Jack Straws
    HDU 4460 Friend Chains
  • 原文地址:https://www.cnblogs.com/longshiyVip/p/4607919.html
Copyright © 2011-2022 走看看