您的位置:首页 > Web前端 > JavaScript

json教程系列(4)-optXXX方法的使用

2017-03-11 09:13 459 查看
在JSONObject获取value有多种方法,如果key不存在的话,这些方法无一例外的都会抛出异常。如果在线环境抛出异常,就会使出现error页面,影响用户体验,针对这种情况最好是使用optXXX方法。
getString方法会抛出异常,如下所示:

1

2

3

4

5

6

7

8

9

10

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方法会抛出异常,如下所示:

1

2

3

4

5

6

7

8

9

10

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方法会抛出异常,如下所示:    

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

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方法会抛出异常,如下所示:   

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

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方法为例说明一下其底层实现过程:

1

2

3

4

5

    public
String
optString(String
key)

    {

        verifyIsNull();

        return
optString(key,
"");

    }

1

2

3

4

5

6

    public
String
optString(String
key,
String
defaultValue)

    {

        verifyIsNull();

        Object
o
=
opt(key);

        return
o
!=
null
?
o.toString()
:
defaultValue;

    }

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: