2017-04-21 42 views
-1

想象一下,我有一個對象 - ChildObject。 ChildObject有3個屬性。 Id,Name,Age。如何將包含其他對象的arraylist對象轉換爲JSON發送到API - Android

我也有另一個對象 - ParentObject。 ParentObject也有3個屬性。 Id,Date,但第三個是ChildObjects系列的ArrayList。

我如何去轉換成一個JSONObject這是能夠通過它發送到問題的REST的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;} 
 

 
}

+0

您是否使用任何庫進行網絡操作? –

+0

這種取決於你正在使用什麼來建立你的OBJ – keepTrackOfYourStack

+0

感謝您的答覆。一切都是「開箱即用」的java。我們沒有任何第三方庫。我們的API調用適用於其他情況。當我們嘗試轉換ParentObject準備好發送時(即,我們還沒有到達實際發送部分),問題就發生了。 – MagicWand

回答

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像這樣的,你可以發送給您的服務器。我希望這是你想要的東西嗎?

+0

謝謝 - 這釘了它。 – MagicWand

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(); 
    } 
} 
+0

不幸的是,我只能選擇一個答案 - 感謝您的幫助 – MagicWand

+0

NP男人,無所謂檢查答案。如果它幫助你,我會滿足。 :) –

相關問題