【问题标题】:SEND JSON ARRAY RETROFIT 2 (ANDROID)发送 JSON 阵列改造 2 (ANDROID)
【发布时间】:2017-03-30 09:19:47
【问题描述】:

我是新手,知道这个问题有很多帖子,但我找不到我的答案。

因此,我需要使用 retrofit2 和请求“PATCH”来升级用户及其议程。但是,我不知道如何使用 Retrofit2。

即使我的研究...没有任何工作!

你能帮帮我吗?

感谢提前 :D

这是我必须发送的:

{
    "gender": "M",
    "trainerName": "Patrick",
    "laterality": "L",
    "email": "xxxx@gmail.com",
    "phoneNumber": "XXXXX",
    "agendaWeekDays": [
        {
            "position": 1,
            "startSeconds": 648000,
            "endSeconds": 72000
        }, 
        {
            "position": 2,
            "startSeconds": 0,
            "endSeconds": 459
        }
    ]
}

响应是 Just :

{
  "success"
}

我的请求

public interface Minterface {
@FormUrlEncoded
@PATCH("api/members/current")
Call<String> test(
        @Field("access_token") String access_token,
        @Field("agendaWeekDays") ArrayList<Agenda> agendaWeekDays);
}

Agenda.class

public class Agenda 
{

    @SerializedName("position")
    @Expose
    private Integer position;
    @SerializedName("startSeconds")
    @Expose
    private Integer startSeconds;
    @SerializedName("endSeconds")
    @Expose
    private Integer endSeconds;

    public Integer getPosition() {
        return position;
    }

    public void setPosition(Integer position) {
        this.position = position;
    }

    public Integer getStartSeconds() {
        return startSeconds;
    }

    public void setStartSeconds(Integer startSeconds) {
        this.startSeconds = startSeconds;
    }

    public Integer getEndSeconds() {
        return endSeconds;
    }

    public void setEndSeconds(Integer endSeconds) {
        this.endSeconds = endSeconds;
    }
}

【问题讨论】:

    标签: android json retrofit2


    【解决方案1】:
    public class Example {
    
    @SerializedName("gender")
    @Expose
    private String gender;
    @SerializedName("trainerName")
    @Expose
    private String trainerName;
    @SerializedName("laterality")
    @Expose
    private String laterality;
    @SerializedName("email")
    @Expose
    private String email;
    @SerializedName("phoneNumber")
    @Expose
    private String phoneNumber;
    @SerializedName("agendaWeekDays")
    @Expose
    private List<AgendaWeekDay> agendaWeekDays = null;
    
    public String getGender() {
    return gender;
    }
    
    public void setGender(String gender) {
    this.gender = gender;
    }
    
    public String getTrainerName() {
    return trainerName;
    }
    
    public void setTrainerName(String trainerName) {
    this.trainerName = trainerName;
    }
    
    public String getLaterality() {
    return laterality;
    }
    
    public void setLaterality(String laterality) {
    this.laterality = laterality;
    }
    
    public String getEmail() {
    return email;
    }
    
    public void setEmail(String email) {
    this.email = email;
    }
    
    public String getPhoneNumber() {
    return phoneNumber;
    }
    
    public void setPhoneNumber(String phoneNumber) {
    this.phoneNumber = phoneNumber;
    }
    
    public List<AgendaWeekDay> getAgendaWeekDays() {
    return agendaWeekDays;
    }
    
    public void setAgendaWeekDays(List<AgendaWeekDay> agendaWeekDays) {
    this.agendaWeekDays = agendaWeekDays;
    }
    
    }
    
    public class AgendaWeekDay {
    
    @SerializedName("position")
    @Expose
    private Integer position;
    @SerializedName("startSeconds")
    @Expose
    private Integer startSeconds;
    @SerializedName("endSeconds")
    @Expose
    private Integer endSeconds;
    
    public Integer getPosition() {
    return position;
    }
    
    public void setPosition(Integer position) {
    this.position = position;
    }
    
    public Integer getStartSeconds() {
    return startSeconds;
    }
    
    public void setStartSeconds(Integer startSeconds) {
    this.startSeconds = startSeconds;
    }
    
    public Integer getEndSeconds() {
    return endSeconds;
    }
    
    public void setEndSeconds(Integer endSeconds) {
    this.endSeconds = endSeconds;
    }
    
    }
    

    之后你想通过改造创建对象或示例类发送它

    Example example = new Example();
    

    然后将此对象的值设置为:

    example.setGender("M");
    .
    .
    .
    example.setAgendaWeekDays(your arraylist);
    

    然后

    retrofit.method(token,example).enqueue(new Callback<Void>()
    {
    @Override
    public void onResponse(Call<Void> call, Response<Void> response)
    {
                                                if(response.message().equalsIgnoreCase("OK"))
    {
    }
    else 
    {}
    

    然后将您的方法定义为:

    @POST("link here")
        Call<Void> method(@Header("Authorization") String authorization, @Body Example example);
    

    它会起作用的。

    【讨论】:

    • 欢迎兄弟...快乐编码:)
    • 谢谢,这行得通。但我有一个问题,如何将 ArrayList 作为参数传输?作为您的解决方案,它作为对象传输。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-05
    相关资源
    最近更新 更多