2016-08-02 69 views
0

它正在获取名称,状态和登录成功。但它分配0到u_id(用户id),应该是4.也许它是从一个Json获取Id作为字符串呢?我不知道正确的整数JSON格式。翻新没有获取JSON对象的ID

JSON:

{ 
    "id": "4", 
    "name": "nuku", 
    "status": "1", 
    "login": "sucess" 
} 

POJO: 公共类LoginModel {

@Expose 
    public static int id; 

    @Expose 
    public String name; 

    @Expose 
    private String status; 
    @Expose 
    private String login; 
...} 

接口:

String url = "http://192.168.10.5/tourist/v1"; 
    @FormUrlEncoded 
    @POST("/login") 
    void Login(@Field("email") String email, 
       @Field("pass") String pass, Callback<LoginModel> cb); 
} 

改造函数调用:

RestAdapter adapter = new RestAdapter.Builder().setEndpoint(RestInterface.url).build(); 

        //Creating Rest Services 
        final RestInterface restInterface = adapter.create(RestInterface.class); 

        //Calling method to get check login 
        restInterface.Login(email.getText().toString(), pass.getText().toString(), new Callback<LoginModel>() { 
         @Override 
         public void success(LoginModel model, Response response) { 

          //finish(); 
          //startActivity(getIntent()); 

          email.setText(""); 
          pass.setText(""); 

           int id = model.getUserId(); 
          if (model.getStatus().equals("1")) { //login Success 

           SharedPreferences sharedPreferences = getSharedPreferences("MyLogin.txt", Context.MODE_PRIVATE); 
           SharedPreferences.Editor editor = sharedPreferences.edit(); 
           editor.putBoolean("FirstLogin", true); 
           editor.commit(); 



           Toast.makeText(LoginActivity.this, "Login In SuccessFully"+model.getUserId(), Toast.LENGTH_SHORT).show(); 

           manager.setPreferences(LoginActivity.this, "status", "1"); 
           String status=manager.getPreferences(LoginActivity.this,"status"); 

           Intent i = new Intent(LoginActivity.this,MainActivity.class); 


           String name = model.getUser_name(); 
           i.putExtra("username", name); 
           // String image = p.getPlace_image(); 
           // i.putExtra("Thumbnail", image); 
           i.putExtra(MainActivity.EXTRA_USER,"username"); 
           startActivity(i); 



           // String nameStr = email.getText().toString(); 

           // i.putExtra("text1", nameStr); 
           //startActivity(i); 

          } else if (model.getStatus().equals("0")) // login failure 
          { 
           Toast.makeText(LoginActivity.this, "Invalid UserName/Pass ", Toast.LENGTH_SHORT).show(); 
           Intent i = new Intent(LoginActivity.this, LoginActivity.class); 
           startActivity(i); 

          } 
         } 

         @Override 
         public void failure(RetrofitError error) { 
          finish(); 
          startActivity(getIntent()); 
          String merror = error.getMessage(); 
          Toast.makeText(LoginActivity.this, merror, Toast.LENGTH_LONG).show(); 
         } 
        }); 
       } 
+0

乍一看,代码中的一切看起来都不错。你确定这是你从API获得的json吗?你能以某种方式证实这一点吗? – Fred

+0

@Fred是的,我直接从邮递员预览中复制它。 –

+1

看起来像一个字符串,而不是整数。你是否尝试将它作为一个字符串进行检索,然后将其转换为整数? – cuoka

回答

0

您的LoginModel不正确或发送JSON的人不正确。您在JSON中的ID是一个字符串,而不是整数(请注意双引号)

您必须在您的LoginModel中将ID类型更改为字符串,但是IMO会将更好的解决方案作为整数。

这是整数的JSON在它的一个例子:

{ 
"email":"[email protected]", 
"age":25, 
"man":true, 
"password":"123456" 
} 
+0

谢谢你,我的问题已经解决了。 –

+0

@NukhbaArshad很好,请接受答案,如果它帮助你。 – cuoka

0

我试图让ID作为字符串,但改造赋值为null给它,所以我只是用这个回声json_encode($转换我的JSON转换成整数输出,JSON_NUMERIC_CHECK);它的工作!