получить неправильный тип данных из ответа модифицированной - PullRequest
0 голосов
/ 01 октября 2019

Я получил userId как double от ответа retrofit2, но при ответе со стороны сервера это 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:

public class LoginDTO {
 @SerializedName("SiteCode")
    private String SiteCode;

    @SerializedName("FullName")
    private String FullName;

    @SerializedName("Employeecode")
    private String Employeecode;

    @SerializedName("UserId")
    private String UserId;
}

Ответы [ 2 ]

0 голосов
/ 01 октября 2019

Сервер дает вам Ответ таким образом, что userId является string. Значения String заключены в двойные кавычки, т.е. ( "").

Теперь, если вы хотите получить double значение для userId в ответе вашего сервера, вам придется изменить внутренний код, написанный на 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 num = Double.parseDouble(StringValue);

0 голосов
/ 01 октября 2019

убедитесь, что ваш класс 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;
}
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...