Json中getString()和optString()的区别

82
在 JSON 中,getString()optString() 有什么区别?

7
optString 可以在你不确定 JSON 请求格式是否会保持不变的情况下非常有用... 例如,对 JSON 请求调用 getString 可能一开始可以工作,但如果将来更改导致键不再存在,则会抛出异常并导致应用程序崩溃。 - Alex Lockwood
5个回答

141

正如迭戈所提到的, 在发布问题之前检查文档是一个好主意(此链接现已过时 - 幸好我们有Wayback Machine!),但现在您已经看过了:

区别在于,如果您指定的键不存在,则optString返回空字符串("")。 另一方面,getString会抛出JSONException。 如果缺少数据是一个错误,请使用getString,否则请使用optString

编辑:来自文档的完整描述:

获取与键相关联的可选字符串。 如果没有这样的键,则返回一个空字符串。 如果值不是字符串且不为null,则将其转换为字符串。


4
如果提供第二个字符串作为参数,则在指定的键不存在时将其用作默认值。 - Andy B
1
点赞,因为我知道了Wayback Machine。它太神奇了。 - Shivam Pokhriyal

13
如果你想避免空指针异常,最好使用 optString()
如果你随时从 JSON 中获取数据,可能会出现特定键值的 null 数据,此时最好使用这个优化方法 optString("<keyname>"),而不是实现Null条件。

1

1) getString (String name):- 如果存在,则返回名称映射的字符串值,必要时进行强制转换,或者如果不存在此类映射,则抛出JSONException

2)optString (String name):- 如果存在,则返回名称映射的字符串值,必要时进行强制转换,否则返回空字符串("")


1

public java.lang.String optString(int index)
获取与索引关联的可选字符串值。 如果该索引处没有值,则返回空字符串。 如果该值不是字符串并且不为null,则将其转换为字符串。
参数:
index - 索引必须介于0到length() - 1之间。
返回值:
字符串值。


1

optString()用于解决NullPointerException的问题,当我们使用getString()时,如果json中不存在所需的键,则会抛出该异常,它基本上将其替换为默认值。

例如,让输入Json为

{
"name":"abhi",
"country":"india"
}

现在在Java中,当您执行以下操作时:
String city = json.getString("city");

使用optString(String key, String default)可以解决上述问题。
如果不使用该方法,可能会抛出NullPointerException
String city= json.optString("city","default");

System.out.println(city);

输出:默认


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接