Android 如何处理json对象的空响应
我得到一个JSON响应,如下所示Android 如何处理json对象的空响应,android,json,Android,Json,我得到一个JSON响应,如下所示 { "edges": [], "nodes": [] } 如何检查对象是否有空值并处理此情况 JSONObject jobj = new JSONObject(line); JSONArray jArray = jobj.getJSONArray("edges"); if(jArray.length()!=0) { for(int i=0;i<jArray.length();i++){ JSONObject json_data = jAr
{
"edges": [],
"nodes": []
}
如何检查对象是否有空值并处理此情况
JSONObject jobj = new JSONObject(line);
JSONArray jArray = jobj.getJSONArray("edges");
if(jArray.length()!=0)
{
for(int i=0;i<jArray.length();i++){
JSONObject json_data = jArray.getJSONObject(i);
x.add((float) json_data.getInt("x"));
y.add((float) json_data.getInt("y"));
end
JSONObject jobj=新的JSONObject(行);
JSONArray jArray=jobj.getJSONArray(“边”);
if(jArray.length()!=0)
{
对于(int i=0;i,使用简单的java规则。检查数组是否为空,如果数组不存在并且您尝试获取它,它只返回null。处理它。如果您知道它将失败,请不要继续解析。请优雅地存在
if (myObj != null)
{
... process
}
您可以通过以下方式进行检查:
JSONObject jobj = new JSONObject(line);
if (jobj.getJSONArray("edges").length() == 0) {
System.out.println("JSONArray is null");
}
else{
System.out.println("JSONArray is not null");
//parse your string here
}
试试这个:
String jsonString = "{ "edges": [], "nodes": [] }";
JSONObject jsonObject = new JSONObject(jsonString);
if( jsonObject.isNull("edges") == false) {
//do sth
}
if( jsonObject.isNull("nodes") == false) {
//do sth
}
您还可以通过jsonObject.has(“edges”)检查json中是否有特定的键
您正在将一些变量传递给JSONObject构造函数。请确保此变量包含整个json字符串,如我的示例中所示,而不是类似
“{”或“edges”:[]”可能问题出在您的json源代码中,如注释中建议的dokkaebi,试试这个。我仅为一个数组显示示例,取决于标志值,您可以显示正确的错误消息,或者成功后,您可以将解析的数据绑定到UI组件
String impuStr = "{\"edges\": [],\"nodes\": []}";
字符串标志=serverResponse(inpustr)
私有字符串服务器响应(字符串jsonStr)
{
String flag=“成功”
jsonobjectjobj;
试一试{
jobj=新的JSONObject(jsonStr);
JSONArray jArrayEdges=jobj.getJSONArray(“边”);
if(jArrayEdges!=null&&jArrayEdges.length()>0)
{
对于(int i=0;i显示的错误是什么?因为JSONObject中有两个json数组,所以JSONObject不为空。现在只需检查JSONArray是否为空或notorg.json.JSONException:输入结束于字符0of@user1494754:如果仍然面临相同的问题,请检查jArray.length()>-1,因为如果它是空的,那么它包含的元素少于零。正如您所知,索引也从0Nope开始。运气不好。它完成了same@user1494754:您已经尝试了jArray.length()>-1
条件?该异常是否有可能在此行引发?JSONObject jobj=new JSONObject(line);
我怀疑您没有解析您认为是的响应,因为异常消息表明您试图解析空字符串。解析发生在您的第一行;其余的是fluff。您确定这会起作用,因为isNull just check key存在于JsonObject中,或者notisNull check key是否存在,或者它是否具有null值has()方法只检查某个键的存在这是文档中所说的“确定与该键关联的值是否为null或是否没有值”
JSONObject jobj;
try {
jobj = new JSONObject(jsonStr);
JSONArray jArrayEdges = jobj.getJSONArray("edges");
if(jArrayEdges != null && jArrayEdges.length() > 0)
{
for(int i=0;i<jArrayEdges.length();i++)
{
JSONObject json_data = jArrayEdges.getJSONObject(i);
// process data here
}
}else
flag = "edges_list_empty";
} catch (JSONException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
flag = "failure";
}
return flag;
}