在 JSON 中,
getString()
和 optString()
有什么区别?正如迭戈所提到的, 在发布问题之前检查文档是一个好主意(此链接现已过时 - 幸好我们有Wayback Machine!),但现在您已经看过了:
区别在于,如果您指定的键不存在,则optString
返回空字符串(""
)。 另一方面,getString
会抛出JSONException
。 如果缺少数据是一个错误,请使用getString
,否则请使用optString
。
编辑:来自文档的完整描述:
获取与键相关联的可选字符串。 如果没有这样的键,则返回一个空字符串。 如果值不是字符串且不为null,则将其转换为字符串。
optString()
。JSON
中获取数据,可能会出现特定键值的 null
数据,此时最好使用这个优化方法 optString("<keyname>")
,而不是实现Null条件。1) getString (String name):- 如果存在,则返回名称映射的字符串值,必要时进行强制转换,或者如果不存在此类映射,则抛出JSONException。
2)optString (String name):- 如果存在,则返回名称映射的字符串值,必要时进行强制转换,否则返回空字符串("")。
public java.lang.String optString(int index)
获取与索引关联的可选字符串值。 如果该索引处没有值,则返回空字符串。 如果该值不是字符串并且不为null,则将其转换为字符串。
参数:
index - 索引必须介于0到length() - 1之间。
返回值:
字符串值。
optString()用于解决NullPointerException的问题,当我们使用getString()时,如果json中不存在所需的键,则会抛出该异常,它基本上将其替换为默认值。
例如,让输入Json为
{
"name":"abhi",
"country":"india"
}
String city = json.getString("city");
optString(String key, String default)
可以解决上述问题。NullPointerException
。String city= json.optString("city","default");
System.out.println(city);
输出:默认
optString
可以在你不确定 JSON 请求格式是否会保持不变的情况下非常有用... 例如,对 JSON 请求调用getString
可能一开始可以工作,但如果将来更改导致键不再存在,则会抛出异常并导致应用程序崩溃。 - Alex Lockwood