在我的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你。
答案 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
}