Java JSONException:尝试获取字符串(“XYZ”)时,XYZ没有值
我通过以下步骤在Android中进行JSON解析: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
<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本身