它成功获取名称、状态和登录。但它将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();
}
});
}
我尝试将Id作为字符串获取,但改装后为其分配了null,所以我只是使用这个echo JSON\u编码($output,JSON\u NUMERIC\u CHECK)将JSON转换为整数;成功了!
要么您的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对象。