Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JSONException:尝试获取字符串(“XYZ”)时,XYZ没有值_Java_Android_Json_Exception Handling - Fatal编程技术网

Java JSONException:尝试获取字符串(“XYZ”)时,XYZ没有值

Java JSONException:尝试获取字符串(“XYZ”)时,XYZ没有值,java,android,json,exception-handling,Java,Android,Json,Exception Handling,我通过以下步骤在Android中进行JSON解析: 使用HttpPost对象从web服务获取XML响应 将此XML转换为JSON字符串,然后转换为JSON对象 现在的问题是,有时XML响应具有空字符串或空标记 例如: <data> <name>Martin Clark</name> <city>London</city> <country>XYZ</country> or <coun

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

  • 使用HttpPost对象从web服务获取XML响应
  • 将此XML转换为JSON字符串,然后转换为JSON对象
  • 现在的问题是,有时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>
    
    
    马丁·克拉克
    伦敦
    XYZ或
    27
    
    解析样式:

    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 />
    
    jsonObject.getString(“国家”);//当xml是这样时,它工作得非常完美:XYZ
    jsonObject.getString(“国家”);//当xml为以下值时,它给出了找不到异常键的提示:
    
    我不明白为什么解析器没有为空白XML对象提供空白字符串

    通过深层次调试,我发现XML-to-JSON转换器不会生成与空白XML对象对应的对象。


    请帮帮我。

    你可以用这个逻辑解决你的问题

    试试这个

    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对象获取字符串,

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

    公共字符串optString(字符串名称)

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

    公共字符串optString(字符串名称、字符串回退)

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


    为什么要将xml转换为json您可以解析xml本身