当我注意到两种方法时,我正在查看JSONObject
getJSONObject(String key)
optJSONObject(String key)
和getJSONObject()
。从文档中,我认为他们做了几乎相同的事情但有一点不同:如果找不到密钥或值,则JSONException
会抛出optJSONObject()
,而null
只会返回{{1} }}
getJSONObject()
和optJSONObject()
之间是否存在其他差异?get
优于opt
,反之亦然?答案 0 :(得分:12)
JSON中的值可能是可选的,因此使用optJSONObject会更好,因为您只需要检查它是否为null并继续执行您的函数。
答案 1 :(得分:7)
optString
将返回空字符串(“”)。 getString
会抛出JSONException
。
答案 2 :(得分:0)
我正在使用带有键“sentence”的我的json文件的optJSONObject,它返回null但正确的结果可能是JSONArray或String。
{
"sentences":[
{
"trans":"làm",
"orig":"do",
"translit":"",
"src_translit":""
}
]
}
答案 3 :(得分:0)
getJSONObject()
在找不到该对象时抛出异常。 optJSONObject()
返回 null。如果您在对象不存在时执行更多操作,则此选项更易于阅读。
JSONObject object = jsonResponse.optJSONObject("object");
if(object == null)
{
// handle not existing here
}
如果您只是抛出另一个异常或在一行中执行其他操作,则此选项会更容易一些。
JSONObject object = null;
try
{
object = jsonResponse.getJSONObject("object");
}
catch(JSONException je)
{
// handle object not found here
}