Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/220.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 从改装响应中获取错误的数据类型_Android_Retrofit2 - Fatal编程技术网

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,键值对显示它是一个双值