Android:json';s值为空

Android:json';s值为空,android,json,Android,Json,在我的Android项目中,当用户登录时,它将访问我们的服务器并向客户端返回json数据,当用户输入错误的用户名或密码时,服务器将返回json数据,如下所示: {"d":{"__type":"FMService.LoginUser:#StarHope.FMS.Web.Pages.Service","Error":"worng","Permissions":null,"UserInfo":null}} 但是,当用户输入正确的用户名和密码时,返回的数据“Error”为null。因此键“Error”

在我的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
        }
这样行吗?这个有什么问题吗?谢谢。

你可以用。如果映射丢失,此方法将引发
JSONException

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

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

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

您还可以使用以下命令测试映射是否存在或是否为null


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

将json字符串解析为使用
isNull
在向映射添加值之前检查
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
}

当用户在此处输入正确的用户名和密码时,还要添加json