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

时间:2012-12-09 19:06:45

标签: java json org.json

JSON中getString()optString()之间的区别是什么?

5 个答案:

答案 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);

输出:默认