从改装响应中获取错误的数据类型
getting wrong data type from retrofit response
我从 retrofit2 响应中得到 userId
作为 double
,但是在服务器端的响应是 string
改造响应
{
"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": ""
}
这是我的休息客户
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 class代码是
public class LoginDTO {
@SerializedName("SiteCode")
private String SiteCode;
@SerializedName("FullName")
private String FullName;
@SerializedName("Employeecode")
private String Employeecode;
@SerializedName("UserId")
private String UserId;
}
确保你的 POJO class 数据如下
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;
}
}
服务器以 [=11=] 是 string
的方式向您提供响应。 String 的值用双引号括起来,即。 (“”)。
现在,如果您想在服务器响应中获得 userId
的 double
值,则必须更改用 php 或其他方式编写的后端代码。
但是您可以轻松地为您的回复制作一个 POJO class,例如:
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 num = Double.parseDouble(StringValue);
我从 retrofit2 响应中得到 userId
作为 double
,但是在服务器端的响应是 string
改造响应
{
"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": ""
}
这是我的休息客户
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 class代码是
public class LoginDTO {
@SerializedName("SiteCode")
private String SiteCode;
@SerializedName("FullName")
private String FullName;
@SerializedName("Employeecode")
private String Employeecode;
@SerializedName("UserId")
private String UserId;
}
确保你的 POJO class 数据如下
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;
}
}
服务器以 [=11=] 是 string
的方式向您提供响应。 String 的值用双引号括起来,即。 (“”)。
现在,如果您想在服务器响应中获得 userId
的 double
值,则必须更改用 php 或其他方式编写的后端代码。
但是您可以轻松地为您的回复制作一个 POJO class,例如:
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 num = Double.parseDouble(StringValue);