JSON中getString()
和optString()
之间的区别是什么?
答案 0 :(得分:115)
正如迭戈所提到的,在发布问题之前检查documentation(此链接现已过期 - 我们有Wayback Machine!的好事)是个好主意,但现在你已经有了:
不同之处在于,如果您指定的密钥不存在,optString
将返回空字符串(""
)。另一方面,getString
会抛出JSONException
。如果数据丢失则使用getString
,如果您不确定数据是否存在则使用optString
。
编辑:文档中的完整描述:
获取与密钥关联的可选字符串。如果没有这样的键,它返回一个空字符串。如果该值不是字符串且不为null,则将其转换为字符串。
答案 1 :(得分:9)
如果您想避免NullPointerException
,最好使用optString()
如果您随时从JSON
获取数据,那么您可能拥有特定Key值的null
数据,而不是实现Null条件,更好地利用此优化方法optString("<keyname>")
答案 2 :(得分:1)
public java.lang.String optString(int index) 获取与索引关联的可选字符串值。如果该索引没有值,则返回空字符串。如果该值不是字符串且不为null,则将其转换为字符串。 参数: index - 索引必须介于0和length() - 1之间。 返回: 字符串值。
答案 3 :(得分:0)
1) getString(字符串名称):-此方法返回按名称映射的String值(如果存在),如果需要则强制转换,否则返回抛出JSONException 映射存在。
2) optString(字符串名称):-此方法返回按名称映射的String值(如果存在),如果需要则强制转换,或者返回空字符串(“”)如果不存在此类映射。
答案 4 :(得分:0)
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);
输出:默认