在Json之后在三个int可能性之间返回一个

时间:2014-09-09 16:40:31

标签: java android json

我正在对API进行Android登录调用,响应可能是两个不同的json:

A.- Json错误  {“message”:“not found”,“error”:“Unauthorized”,“status”:401}

B.-Json成功  { “权限”:10 “ac_status”: “活跃”}

我的想法是在检查Json标签后返回主屏幕中的三个(int)值之一:

如果错误获得JSON(如服务器关闭),则返回0 如果登录成功,则返回1 如果登录错误(服务器错误,JSON为空)

,则返回2

我在AsyncTask上尝试这样的东西,它可以工作,但我总是得到0服务器错误和登录成功。我怎么能这样做?谢谢你提前。

@Override
 protected Void doInBackground(Void... params) {
...
...

int valueReturn =0;
JSONObject response = jsonService.call(url);

 try {
   if (response.getString("TAG_ERROR")
     valueReturn = 2;
   else
     valueReturn= 1;

   } catch (JSONException e) {
     valueReturn = 0;
   }

1 个答案:

答案 0 :(得分:1)

  

有效,但我总是因服务器错误和登录成功而获得0。

因为提供的JSON字符串中不存在TAG_ERROR键所以控制总是在catch块中。

 How I can do it?

在访问值之前,使用JSONObject.has(String KEY_NAME)检查密钥是否存在:

if (response.has("error"){

   // server error
}else if (response.has("ac_status"){
      // login success
}else{

//error getting Json

}