运行以下代码:
1
2
3
4
5
6
7
8
9
10
11
|
public
static
void
main(String[] args)
{
JSONObject test =
new
JSONObject();
test.put(
"name"
,
"kewen"
);
test.put(
"empty"
,
null
);
System.out.println(
"test.optString(\"empty\"):"
+test.optString(
"empty"
));
System.out.println(
"test.optString(\"name\"):"
+test.optString(
"name"
));
System.out.println(
"test.getString(\"name\"):"
+ test.getString(
"name"
));
System.out.println(
"test.getString(\"empty\"):"
+ test.getString(
"empty"
));
}
|
运行一把就会看到这样的结果 、
1
2
3
4
5
6
|
test.optString(
"empty"
):
test.optString(
"name"
):kewen
test.getString(
"name"
):kewen
Exception in thread
"main"
net.sf.json.JSONException: JSONObject[
"empty"
] not found.
at net.sf.json.JSONObject.getString(JSONObject.java:
2247
)
at basicUtils.JSONUtil.main(JSONUtil.java:
41
)
|
因为:在JSONObject的key存在值得时候,两者是没有什么区别的,然后如果key对应的value为null,那么getString方法就会报错。
至于为什么会这样我们可以看一下getString的源码
1
2
3
4
5
6
7
8
|
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."
);
}
|