Android:json的值为null

时间:2012-12-11 01:48:37

标签: android json

在我的Android项目中,当用户登录时,它将访问我们的服务器并返回客户端的json数据,当用户输入错误的用户名或密码时,服务器将返回json数据,如下所示:

{"d":{"__type":"FMService.LoginUser:#StarHope.FMS.Web.Pages.Service","Error":"worng","Permissions":null,"UserInfo":null}}

但是当用户输入正确的用户名和密码时,返回数据“Error”为null。因此,键“Error”的值为null。我试着用它来处理它。

        try
        {
          //when Error is not null
          String error = (String) map.get("Error"); 
        } 
        catch (Exception e)
        {
          //when Error is null
        }

这样好吗?这有什么不对吗? Thang你。

2 个答案:

答案 0 :(得分:1)

您可以使用getString()。如果缺少映射,此方法将引发JSONException

  

public String getString(String name)

     

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

     

如果不存在这样的映射,则抛出JSONException。

您还可以使用isNull()

测试映射是否存在或为空

请注意,Error字段位于d对象内,而不是根目录。

答案 1 :(得分:1)

将json字符串解析为use isNull,以便在向Map添加值之前检查jsonobject内容是否为NULL:

JSONObject jobject=new JSONObject("YOUR_JSON_STRING");


if(!jobject.isNull("d")){
  JSONObject jobjd=jobject.getJSONObject("d");
 String strtype,strError;
  if(jobjd.isNull("__type")){
     strtype=jobjd.getString("__type");
    }
   else{
      //do some code here
        strtype="is null";
    }
  if(jobjd.isNull("Error")){
     strError=jobjd.getString("Error");
    }
   else{
      //do some code here
        strError="is null";
    }
    //.....same code here for Permissions and UserInfo
}

else{
   //do some code here
}