JSONException:尝试getString(“XYZ”)时没有XYZ的值

时间:2014-05-11 07:33:30

标签: java android json exception-handling

我正在通过以下步骤在Android中进行JSON解析:

  1. 使用HttpPost对象从Web服务获取XML响应。
  2. 将此XML转换为JSON字符串,然后转换为JSON对象。
  3. 现在问题是有时XML响应有空字符串或空标记。

    例如:

    <data>
        <name>Martin Clark</name>
        <city>London</city>
        <country>XYZ</country> or <country />     <!-- Sometimes it will blank string like this if country is not available -->
        <age>27</age>
    </data>
    

    解析风格:

    jsonObject.getString("country"); // It is working perfect when xml is this : <country>XYZ<country/>
    
    jsonObject.getString("country"); // It is giving Exception key is not found when xml is this : <country />
    

    我不明白为什么解析器没有给我空白XML对象的BLANK字符串。

    通过深层次调试,我发现XML到JSON转换器不会产生与空白xml对象相对应的对象。

    请帮帮我。

2 个答案:

答案 0 :(得分:5)

使用optString代替,捕获异常代价高昂且不必要。

public String optString(String name)

  

在API级别1中添加返回按名称映射的值(如果存在),   必要时强迫它。如果没有这样的映射,则返回空字符串   存在。

public String optString(String name,String fallback)

  

在API级别1中添加返回按名称映射的值(如果存在),   必要时强迫它。如果不存在这样的映射,则返回回退。

Documentation

答案 1 :(得分:0)

您可以使用逻辑解决方案解决问题。

尝试一次。

public static String getStringFromJSON(JSONObject json, String key){


    String value = ""; // Blank string by default.  

    try {       

        String value = json.getString(key);


        return value;
    }
        catch(JSONException exp){

        exp.getMessage();

    }

    return value;  // this wil return BLANk string if object is not prasent.

}

你可以使用这个方法从json对象中获取String,