getJSON与optJSON
我正在查看getJSON与optJSON,json,getjson,Json,Getjson,我正在查看JSONObject时注意到了两种方法:getJSONObject(字符串键)和optJSONObject(字符串键)。从文档中,我发现他们做了几乎相同的事情,但有一点不同:如果找不到键或值,则getJSONObject()抛出一个JSONException,而optJSONObject()只返回null getJSONObject()和optJSONObject()之间还有其他区别吗 get比opt有什么好处,反之亦然 是否存在我希望使用其中一种而不是另一种的具体情况,或者强烈不鼓励
JSONObject
时注意到了两种方法:getJSONObject(字符串键)
和optJSONObject(字符串键)
。从文档中,我发现他们做了几乎相同的事情,但有一点不同:如果找不到键或值,则getJSONObject()
抛出一个JSONException
,而optJSONObject()
只返回null
getJSONObject()
和optJSONObject()
之间还有其他区别吗get
比opt
有什么好处,反之亦然JSON中的值可能是可选的,因此使用optJSONObject更好,因为您只需检查它是否为null并继续执行您的函数 我正在对json文件使用optJSONObject,其中包含键“句子”,它返回null,但正确的结果可能是JSONArray或String
{
"sentences":[
{
"trans":"làm",
"orig":"do",
"translit":"",
"src_translit":""
}
]
}
optString
如果指定的键不存在,则返回空字符串(“”)getString
抛出一个JSONException
getJSONObject()
在找不到该对象时引发异常optJSONObject()
返回nullJSONObject 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
}
根据问题2和3,最好的答案可能是如何根据代码的上下文处理错误。我认为如果使用
getJSONObject
,因为它会引发异常,如果使用try-catch
,您可以在catch
中更轻松地处理错误的JSON格式