在动态添加对象时需要通过 Retrofit post JSON 作为对象数组

Need to post JSON as an array of objects via Retrofit while dynamically adding objects

我必须 post 一个 JSON 对象数组。 JSON 示例粘贴在下面:

[
{
    "checklistkey": "what is your age ___ and ur bd___",
    "checklistvalue": "yes",
    "taskId": "PMTASK-cmms-01-71-1"
},
{
    "checklistkey": "how r you___? ______",
    "checklistvalue": "no",
    "taskId": "PMTASK-cmms-DE01-71-1"
}

]

这里的object个数会根据之前请求中收到的ID动态添加。

现在的 POJO 看起来像:

public class CheckListAddRequest {
@SerializedName("taskId")
@Expose
private String taskId;
@SerializedName("checklistkey")
@Expose
private String checklistkey;
@SerializedName("checklistvalue")
@Expose
private String checklistvalue;

public String getTaskId() {
    return taskId;
}

public void setTaskId(String taskId) {
    this.taskId = taskId;
}

public String getChecklistkey() {
    return checklistkey;
}

public void setChecklistkey(String checklistkey) {
    this.checklistkey = checklistkey;
}

public String getChecklistvalue() {
    return checklistvalue;
}

public void setChecklistvalue(String checklistvalue) {
    this.checklistvalue = checklistvalue;
}

public CheckListAddRequest(String taskId, String checklistkey, String checklistvalue) {
    this.taskId = taskId;
    this.checklistkey = checklistkey;
    this.checklistvalue = checklistvalue;
}}

对此的 Retrofit 调用是:

 @POST("cmms")
@Headers("Content-Type: application/json")
Call<CheckListAddResponse> getCheckListAdd(@Body CheckListAddRequest checkListAddRequest,
                                           @Header("X-Auth-Token") String token,
                                           @Header("workspace") String workspace);

现在,在添加创建 JSON 请求的详细信息时,我会这样写:

CheckListAddRequest checkListAddRequest = new CheckListAddRequest(taskNumber, checkDesc, statusString);

现在如果我在请求中有多个对象,我该如何发送?

这应该是一个 array/list 如果它是多个动态对象,您可以轻松地更改项目添加或从列表中删除并发送

ArrayList.

做这个小改动。

@POST("cmms")
@Headers("Content-Type: application/json")
Call<CheckListAddResponse> getCheckListAdd(@Body ArrayList<CheckListAddRequest> checkListAddRequest,
                                           @Header("X-Auth-Token") String token,
                                           @Header("workspace") String workspace);

现在传递数组列表或列表中的值。