2

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

这让我返回:org.json.JSONException: end of input at character 0 of

4

4 回答 4

3

试试这个:

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 中是否有一些特定的键

您将一些 \line\ 变量传递给 JSONObject 构造函数。确保此变量包含您的整个 json 字符串,例如我的示例中的这个字符串,而不是像 "{" 或 ' "edges": [] ' 可能问题出在您的 json 源中,如评论中建议的 dokkaebi

于 2012-12-05T21:03:40.723 回答
2

试试这个。我仅显示一个数组的示例,具体取决于标志值,您可以显示正确的错误消息,或者成功后您可以将解析的数据绑定到 UI 组件。

String impuStr = "{\"edges\": [],\"nodes\": []}";

字符串标志 = serverResponse(impuStr);

私人字符串服务器响应(字符串jsonStr){字符串标志=“成功”;

    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;
}
于 2012-12-06T11:02:17.123 回答
2

您可以检查为:

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         
     }
于 2012-12-05T19:55:41.317 回答
0

使用简单的 java 规则。检查数组是否为空,如果数组不存在并且您尝试获取它,它只会返回 null。只要处理它。如果您知道它会失败,请不要继续解析。只是优雅地存在。

if (myObj != null)
{
  ... process
}
于 2012-12-05T19:52:27.917 回答