当前位置: 首页 > 知识库问答 >
问题:

改造没有得到JSON对象的id

戎劲
2023-03-14

它成功获取名称、状态和登录。但它将0分配给u_id(用户ID),应该是4。也许它从Json获取id作为字符串?我不知道整数的正确JSON格式。

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();
                        }
                    });
                }

共有2个答案

方玄天
2023-03-14

我尝试将Id作为字符串获取,但改装后为其分配了null,所以我只是使用这个echo JSON\u编码($output,JSON\u NUMERIC\u CHECK)将JSON转换为整数;成功了!

邢焕
2023-03-14

要么您的LoginModel不正确,要么发送JSON的人做得不对。您在JSON中的ID是字符串,而不是整数(注意双引号)

您必须在LoginModel中将ID类型更改为String,但在我看来,更好的解决方案是将其作为整数接收。

这是一个包含整数的JSON示例:

{
 "email":"some@email.com",
 "age":25,
 "man":true,
 "password":"123456"
}
 类似资料:
  • 我有来自一个API的数据,看起来如下所示 使用reverfit,我尝试使用下面的代码将它转换为一个对象。为了测试,它目前被提供了一个静态变量,如邮政编码,这是已知的工作。 服务类。 地址类 位置类 地址接口 在使用调试器时,我看到调用跳过onFailure和onResponse函数,只返回仍然为空的addresses。我甚至在这两个函数中都放入了print语句,但终端中都没有显示这两个函数,以确认

  • 问题内容: 我试图让Spring中的控制器按照3.0的建议使用Jackson类返回无济于事的JSON响应。我的课程路径中当然有杰克逊jar文件(jackson-core- asl-1.5.5.jar和jackson-mapper-asl-1.5.5.jar)。 至于appconfig.xml条目,我不确定是否需要这些。我将它们放在那里,作为最后的绝望之举,然后再回到ol’fashion non-j

  • 问题内容: 我正在使用Android应用程序中的API,所有JSON响应均如下所示: 问题是,我所有的POJO有,字段,里面领域是真正的POJO我想要的。 有什么方法可以创建Gson的自定义转换器以始终提取字段,因此改造会返回适当的POJO? 问题答案: 您将编写一个自定义反序列化器,该反序列化器返回嵌入的对象。 假设您的JSON是: 然后,您将获得一个POJO: 然后编写一个反序列化器: 现在,

  • 问题内容: 我有几个Javascript原型。最初,实例将仅填写ID,并带有一些其他数据的通用占位符信息。然后,我使用ID和对象类型(使用jQuery的AJAX函数)向服务器发送一条消息,然后服务器返回一个JSON对象,其中包含所有缺少的信息(但没有ID)。返回的对象中的变量与现有对象中的变量名称完全相同。 将其转移到现有的空对象中最简单的方法是什么?我想出了几种选择 将对象设置为等于返回的对象,

  • 问题内容: 错误::’dict’对象没有属性’_meta’ 问题答案: 序列化器将等待普通的查询集,而不是(由返回)。如果只想查询某些字段,请使用

  • 前言 写这篇文章的目的是经常看到开发人员说:把字符串转化为JSON对象,把JSON对象转化成字符串等类似的话题,所以把之前收藏的一篇老外的文章整理翻译了一下,供大家讨论,如有错误,请大家指出,多谢。 正文 本文的主题是基于ECMAScript262-3来写的,2011年的262-5新规范增加了JSON对象,和我们平时所说的JSON有关系,但是不是同一个东西,文章最后一节会讲到新增加的JSON对象。