【问题标题】:The difference between getString() and optString() in JsonJson中getString()和optString()的区别
【发布时间】:2012-11-27 06:18:30
【问题描述】:

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

【问题讨论】:

  • optString 在您不确定 JSON 请求格式是否会保持不变的情况下很有用......即,在 JSON 请求上调用 getString 可能一开始可以工作,但是如果它在未来发生变化,导致密钥不再存在,则会引发异常并且您的应用可能会崩溃。

标签: java json org.json


【解决方案1】:

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

不同之处在于,如果您指定的键不存在,optString 将返回空字符串 ("")。另一方面,getString 会抛出 JSONException。如果数据丢失是一个错误,请使用getString,如果您不确定它是否存在,请使用optString

编辑:文档中的完整描述:

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

【讨论】:

  • 仅供参考:如果指定的键不存在,则提供第二个字符串作为参数将用作默认值。
  • 支持因为我了解了 Wayback Machine。太神奇了。
【解决方案2】:

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

【讨论】:

    【解决方案3】:

    如果你想避免NullPointerException,你最好使用optString()

    如果你在任何时候都从JSON获取数据,你可能有null数据对应一个特定的Key值,那个时候不要实现Null条件,最好使用这个优化的方法optString("<keyname>")

    【讨论】:

      【解决方案4】:

      1) getString(String name):- 该方法如果存在则返回按名称映射的String值,必要时强制转换,如果不存在则抛出JSONException映射存在。

      2)optString(String name):-这个方法返回name映射的String值,如果存在的话,必要时强制,或者空字符串("") 如果不存在这样的映射。

      【讨论】:

        【解决方案5】:

        optString() 用于克服 NullPointerException,我们在使用 getString() 时得到的,当所需的键在 json 中不存在时,它基本上替换为默认值。

        示例让输入的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);
        

        输出:默认

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-07-18
          • 1970-01-01
          • 2012-06-06
          相关资源
          最近更新 更多