Android 从改装响应中获取错误的数据类型
我从第二次响应中获得了Android 从改装响应中获取错误的数据类型,android,retrofit2,Android,Retrofit2,我从第二次响应中获得了userId作为double,但在服务器端的响应中,它是一个字符串 改装响应 { "UserId": 1.0, "UserName": "suresh", "SiteCode": 0.0, "FullName": "suresh, suresh", "Employeecode": 0.0, "IsActive": 0.0, "ProfileURL": "" } 服务器响应 { "UserId": "1",
userId
作为double
,但在服务器端的响应中,它是一个字符串
改装响应
{
"UserId": 1.0,
"UserName": "suresh",
"SiteCode": 0.0,
"FullName": "suresh, suresh",
"Employeecode": 0.0,
"IsActive": 0.0,
"ProfileURL": ""
}
服务器响应
{
"UserId": "1",
"UserName": "suresh",
"SiteCode": 0.0,
"FullName": "suresh, suresh",
"Employeecode": 0.0,
"IsActive": 0.0,
"ProfileURL": ""
}
为什么我会这样,原因是什么,如何解决
如何得到以下作为我的回应
{
"UserId": "1",
"UserName": "suresh",
"SiteCode": 0.0,
"FullName": "suresh, suresh",
"Employeecode": 0.0,
"IsActive": 0.0,
"ProfileURL": ""
}
这是我的rest客户
public static Retrofit getClient() {
try {
retrofit = null;
if (retrofit == null) {
OkHttpClient client = new OkHttpClient.Builder()
.connectTimeout(100, TimeUnit.SECONDS)
.readTimeout(100,TimeUnit.SECONDS).build();
retrofit = new Retrofit.Builder()
//.baseUrl("http://192.168.1.138/OMS_Orders/").client(client)
.baseUrl("someURL").client(client)
.addConverterFactory(GsonConverterFactory.create())
.build();
}
return retrofit;
} catch (Exception ex) {
Log.d("Exceptionerror", ex.toString());
}
return retrofit;
}
pojo类代码是
public class LoginDTO {
@SerializedName("SiteCode")
private String SiteCode;
@SerializedName("FullName")
private String FullName;
@SerializedName("Employeecode")
private String Employeecode;
@SerializedName("UserId")
private String UserId;
}
确保数据的POJO类如下所示
public class DataList {
@SerializedName("UserId")
@Expose
private String userId;
@SerializedName("UserName")
@Expose
private String userName;
@SerializedName("SiteCode")
@Expose
private Double siteCode;
@SerializedName("FullName")
@Expose
private String fullName;
@SerializedName("Employeecode")
@Expose
private Double employeecode;
@SerializedName("IsActive")
@Expose
private Double isActive;
@SerializedName("ProfileURL")
@Expose
private String profileURL;
public String getUserId() {
return userId;
}
public void setUserId(String userId) {
this.userId = userId;
}
}
服务器以这样的方式向您提供响应:
userId
是一个字符串
。字符串的值被括在双引号内,即(“”)
现在,如果您想在服务器响应中获得userId
的double
值,您必须更改用php或其他语言编写的后端代码
但您可以轻松地为您的响应创建一个POJO类,如:
public class Response
{
private String UserName;
private String SiteCode;
private String UserId;
private String Employeecode;
private String IsActive;
private String FullName;
private String ProfileURL;
public String getUserName ()
{
return UserName;
}
public void setUserName (String UserName)
{
this.UserName = UserName;
}
public String getSiteCode ()
{
return SiteCode;
}
public void setSiteCode (String SiteCode)
{
this.SiteCode = SiteCode;
}
public String getUserId ()
{
return UserId;
}
public void setUserId (String UserId)
{
this.UserId = UserId;
}
public String getEmployeecode ()
{
return Employeecode;
}
public void setEmployeecode (String Employeecode)
{
this.Employeecode = Employeecode;
}
public String getIsActive ()
{
return IsActive;
}
public void setIsActive (String IsActive)
{
this.IsActive = IsActive;
}
public String getFullName ()
{
return FullName;
}
public void setFullName (String FullName)
{
this.FullName = FullName;
}
public String getProfileURL ()
{
return ProfileURL;
}
public void setProfileURL (String ProfileURL)
{
this.ProfileURL = ProfileURL;
}
@Override
public String toString()
{
return "Response [UserName = "+UserName+", SiteCode = "+SiteCode+", UserId = "+UserId+", Employeecode = "+Employeecode+", IsActive = "+IsActive+", FullName = "+FullName+", ProfileURL = "+ProfileURL+"]";
}
}
当您需要将
userId
作为double时,您可以执行double num=double.parseDouble(StringValue)代码>发布您的响应pojo类,这是json字符串,我从改装中获得。我没有使用任何类。@PJain在服务器端,它只是字符串,我已经检查过了,但是改型的响应由于某些原因是错误的,您为UserId@padmajarani分配了什么数据类型您需要将json转换为pojo。你可以用gson来做。您还可以在不使用任何转换器的情况下解析json字符串。改型没有问题。请先理解这个问题,在服务器端,我得到的响应是userId为string,即“1”,从改型响应中,我得到的userId为1.0,键值对显示它是一个双值