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


71

getString()optString()JSON有什么区别?


7
optString在您不确定JSON请求格式将保持不变的情况下可能会很有用...即,首先调用getStringJSON请求可能会起作用,但是如果将来发生更改以致密钥不再存在,将会引发异常,并且您的应用程序可能会崩溃。
Alex Lockwood

Answers:


126

正如Diego所提到的,在此处发布问题之前,最好先检查文档(此链接现在已过期-好的,我们有了Wayback Machine!),但现在您有了:

不同之处在于,如果您指定的键不存在,则optString返回空字符串("")。getString另一方面会引发一个JSONExceptiongetString如果数据丢失是错误的,请使用,或者optString如果你不知道它会在那里。

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

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


3
仅供参考:如果指定的键不存在,则提供第二个字符串作为参数将用作默认值。
安迪B

1
支持cuz我对Wayback Machine有所了解。太神奇了。
Shivam Pokhriyal

10

如果您想避免NullPointerException,最好利用optString()

如果您JSON随时要从中获取数据,则此时可能具有null特定键值的数据,而不是实施Null条件,则最好使用此优化方法optString("<keyname>")


1

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


0

1)getString(字符串名称):-此方法返回按名称映射的String值(如果存在),如果需要则强制转换,如果不存在此类映射,则抛出JSONException

2)optString(字符串名称):-此方法返回按名称映射的String值(如果存在),如果需要则强制转换,如果没有这种映射,则返回空字符串(“”)


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

输出:默认

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.