0

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

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

但是当用户输入正确的用户名和密码时,返回数据“Error”为空。所以键“Error”的值为空。我尝试这个来处理它。

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

这个可以吗?这有什么问题吗?给你。

4

2 回答 2

1

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

公共字符串 getString(字符串名称)

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

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

您还可以使用以下方法测试映射是否存在或为空isNull()

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

于 2012-12-11T01:52:24.250 回答
1

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

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
}
于 2012-12-11T01:58:40.727 回答