getString()
和optString()
JSON有什么区别?
Answers:
正如Diego所提到的,在此处发布问题之前,最好先检查文档(此链接现在已过期-好的,我们有了Wayback Machine!),但现在您有了:
不同之处在于,如果您指定的键不存在,则optString
返回空字符串(""
)。getString
另一方面会引发一个JSONException
。getString
如果数据丢失是错误的,请使用,或者optString
如果你不知道它会在那里。
编辑:来自文档的完整描述:
获取与键关联的可选字符串。如果没有这样的键,它将返回一个空字符串。如果该值不是字符串且不为null,则将其转换为字符串。
public java.lang.String optString(int index)获取与索引关联的可选字符串值。如果该索引处没有值,则返回一个空字符串。如果该值不是字符串且不为null,则将其覆盖为字符串。参数:index-索引必须在0到length()之间-1。返回:一个String值。
1)getString(字符串名称):-此方法返回按名称映射的String值(如果存在),如果需要则强制转换,如果不存在此类映射,则抛出JSONException。
2)optString(字符串名称):-此方法返回按名称映射的String值(如果存在),如果需要则强制转换,如果没有这种映射,则返回空字符串(“”)。
optString()用于克服NullPointerException,当json中不存在必需的键时,我们在使用getString()时会得到它,它基本上会替换为默认值。
示例让输入Json为
{
"name":"abhi",
"country":"india"
}
执行时现在在Java中
String city = json.getString("city");
它会抛出一个NullPointerException
。
通过使用optString(String key, String default)
我们可以克服上述问题。
String city= json.optString("city","default");
System.out.println(city);
输出:默认
optString
在您不确定JSON请求格式将保持不变的情况下可能会很有用...即,首先调用getString
JSON请求可能会起作用,但是如果将来发生更改以致密钥不再存在,将会引发异常,并且您的应用程序可能会崩溃。