如何将包含其他对象和arraylist的对象转换为JSON以发送到API - Android

时间:2017-04-21 11:20:06

标签: android json object arraylist

想象一下,我有一个对象 - ChildObject。 ChildObject有3个属性。 Id,姓名,年龄。

我还有另一个对象 - ParentObject。 ParentObject还有3个属性。 Id,Date但第3个是ChildObjects Family的ArrayList。

我如何将其转换为JSONObject,以便能够将其发送到RESTfull WebAPI服务。

到目前为止,我没有找到任何可行的方法,而且我正在努力解决这个问题。

为了让它更具挑战性我不能使用第三方扩展(例如gson等)。

提前感谢您的帮助。

添加对象以查看它们是否更清晰 ParentObject

public class JobMovementRequestDto {

    public String Id_Employee;
    public String ActionDate;
    public String Id_Terminal;
    public String Id_Device;
    public ArrayList<JobActivityRequestDto> FromJobs;
    public ArrayList<JobActivityRequestDto> ToJobs;

    public JobMovementRequestDto(){

    }

    public JobMovementRequestDto(String idEmployee, String activityDate, String idTerminal, String idDevice, ArrayList<JobActivityRequestDto> fromItems, ArrayList<JobActivityRequestDto> toItems){

        this.Id_Employee = idEmployee;
        this.ActionDate = activityDate;
        this.Id_Terminal = idTerminal;
        this.Id_Device = idDevice;
        this.FromJobs = fromItems;
        this.ToJobs = toItems;
    }

    public String getIdEmployee() {return this.Id_Employee;}

    public String getActivityDate() {return this.ActionDate;}

    public String getIdTerminal() {return this.Id_Terminal;}

    public String getIdDevice() {return this.Id_Device;}

    public ArrayList<JobActivityRequestDto> getFromList() {return this.FromJobs;}

    public ArrayList<JobActivityRequestDto> getToLIst() { return this.ToJobs;}

ChildObject

public class JobActivityRequestDto {

    public String Id_Job;
    public String Id_Batch;
    public String Id_ActivityType;

    public JobActivityRequestDto()
    {

    }

    public JobActivityRequestDto(String idJob, String idBatch, String idActivityType)
    {
        this.Id_Job = idJob;
        this.Id_Batch = idBatch;
        this.Id_ActivityType = idActivityType;
    }

    public String getIdJob() { return this.Id_Job;}

    public String getIdBatch() {return this.Id_Batch;}

    public String getIdActivityType() {return this.Id_ActivityType;}

}

2 个答案:

答案 0 :(得分:1)

以下是您的完整解决方案,请检查。

public void makeJsonObject()
{
    try
    {
        JSONObject parentJsonObject = new JSONObject();

        parentJsonObject.put("Id", parentObject.getId());
        parentJsonObject.put("Id", parentObject.getDate());

        JSONArray childListArr = new JSONArray();

        for (int i = 0; i < parentObject.ChildObjectsList().size(); i++)
        {
            ChildObject childObject = parentObject.ChildObjectsList().get(i);

            JSONObject childJsonObject = new JSONObject();
            childJsonObject.put("id", childObject.getId());
            childJsonObject.put("Name", childObject.getName());
            childJsonObject.put("Age", childObject.getAge());

            childListArr.put(childJsonObject);
        }

        parentJsonObject.put("childList", childListArr);


        Log.e(TAG, "parentJsonObject=="+parentJsonObject.toString(4));
    }
    catch (Exception ex)
    {
        ex.printStackTrace();
    }
}

答案 1 :(得分:0)

    JSONObject fromObject, toObject, parentObject;
    JSONArray fromArray, toArray;

    JobMovementRequestDto JMRD = new JobMovementRequestDto();
    try {
        parentObject = new JSONObject();
        parentObject.put("Id_Employee", JMRD.getIdEmployee());
        parentObject.put("ActionDate", JMRD.getActivityDate());
        parentObject.put("Id_Terminal", JMRD.getIdTerminal());
        parentObject.put("Id_Device", JMRD.getIdDevice());

        fromArray = new JSONArray();
        for(JobActivityRequestDto JARD : JMRD.getFromList()){
            //Loop your multiple childObjects and add it childArray
            fromObject = new JSONObject();
            fromObject.put("Id_Job",JARD.getIdJob());
            fromObject.put("Id_Batch",JARD.getIdBatch());
            fromObject.put("Id_ActivityType",JARD.getIdActivityType());
            fromArray.put(fromObject);
        }

        toArray = new JSONArray();
        for(JobActivityRequestDto JARD : JMRD.getToLIst()){
            //Loop your multiple childObjects and add it childArray
            toObject = new JSONObject();
            toObject.put("Id_Job",JARD.getIdJob());
            toObject.put("Id_Batch",JARD.getIdBatch());
            toObject.put("Id_ActivityType",JARD.getIdActivityType());
            toArray.put(toObject);
        }

        //Finally, Add childArray to ParentObject.
        parentObject.put("fromObjects",fromArray);
        parentObject.put("toObjects",toArray);


    } catch (JSONException e) {
        e.printStackTrace();
    }

像这样创建一个JSON,你可以将它发送到你的服务器。我希望这是你想要的吗?