Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.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
Android 如何处理json对象的空响应_Android_Json - Fatal编程技术网

Android 如何处理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

我得到一个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 = 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;
}