2017-06-23 83 views
-1

我對我的一個Web服務有以下響應,我正在使用Retrofit和GSON。修正+ GSON的正確JSON響應?

{ 
    "error": false, 
    "Timeline": { 
     "Date": "2040-06-15", 
     "bandList": { 
      "breakfast": { 
       "dosageList": { 
        "01": { 
         "packed": "true", 
         "medicineList": [ 
          { 
           "medicine": { 
            "id": "01", 
            "name": "glipizide 5 mg tablet, 100 ", 
            "category": "regular", 
            "image": null, 
            "indication": "NIDDM", 
            "packed": true, 
            "med_id": "352", 
            "dosage": 1 
           } 
          }, 
          { 
           "medicine": { 
            "id": "04", 
            "name": "Frusemide (Terry White Chemists) 20 mg uncoated tablet, 100 ", 
            "category": "regular", 
            "image": null, 
            "indication": "Fluid", 
            "packed": true, 
            "med_id": "4", 
            "dosage": 2 
           } 
          } 
         ] 
        }, 
        "02": { 
         "packed": "false", 
         "medicineList": [ 
          { 
           "medicine": { 
            "id": "05", 
            "name": "Refresh Tears Plus 0.5% eye drops solution, 15 mL ", 
            "category": "regular", 
            "image": null, 
            "indication": "Dry Eyes", 
            "packed": false, 
            "med_id": "372", 
            "dosage": 1 
           } 
          } 
         ] 
        } 
       } 
      } 
     } 
    } 
} 

Q1。 有沒有辦法使用模型類(POJO)解析上面的響應或沒有它們?我堅持爲以上結構生成模型類。如何爲以上JSON生成POJO?

Q2。我在如何說服下面發送響應,JSON的正確結構/格式是什麼?是否有任何JSON標準可以顯示給Web開發人員以獲取此JSON格式? (注:我沒事解析這個結構)

{ 
"error": false, 
"Timeline": { 
    "Date": "2040-06-15", 
    "band": [ 
     { 
      "name": "breakfast", 
      "dosage": [ 
       { 
        "id": "01", 
        "packed": "true", 
        "medicine": [ 
         { 
          "id": "01", 
          "name": "glipizide 5 mg tablet, 100 ", 
          "category": "regular", 
          "image": null, 
          "indication": "NIDDM", 
          "packed": true, 
          "med_id": "52", 
          "dosage": 1 
         }, 
         { 
          "id": "04", 
          "name": "Frusemide (Terry White Chemists) 20 mg uncoated tablet, 100 ", 
          "category": "regular", 
          "image": null, 
          "indication": "Fluid", 
          "packed": true, 
          "med_id": "54", 
          "dosage": 2 
         } 
        ] 
       }, 
       { 
        "id": "02", 
        "packed": "false", 
        "medicine": [ 
         { 
          "id": "05", 
          "name": "Refresh Tears Plus 0.5% eye drops solution, 15 mL ", 
          "category": "regular", 
          "image": null, 
          "indication": "Dry Eyes", 
          "packed": false, 
          "med_id": "372", 
          "dosage": 1 
         } 
        ] 
       } 
      ] 
     } 
    ] 
} 

}

預先感謝您。

編輯

我用它來自動生成使用這些網站的POJO,但它給下面的一些類的反應。我如何將其轉換爲適當的課程?

package ; 
public class DosageList 
{ 
    private 01 01; 

    private 02 02; 

    public void set01(01 01){ 
     this.01 = 01; 
    } 
    public 01 get01(){ 
     return this.01; 
    } 
    public void set02(02 02){ 
     this.02 = 02; 
    } 
    public 02 get02(){ 
     return this.02; 
    } 
} 

EDIT 2

我幾乎做了解析第一JSON,但卡在這裏。

for (String bandName: event.getTimeline().getBand().keySet()) { 

    Log.d("<<<--Band-->>>", "Value " + event.getTimeline().getBand().get(bandName)); 
    Band band = event.getTimeline().getBand().get(bandName); 
    for (String dosageName:band.getDosage().keySet()) { 
    Dosage dosage = band.getDosage().get(dosageName); 
    Log.d("<<<--Dosage-->>>", "Value " + dosage.getMedicine()); 
      for (Medicine medicine: dosage.getMedicine()) { 
       Log.d("<<<--Medicine-->>>", "Value " + dosage.getMedicine().get(0)); 
      } 
    } 

} 

如何檢索藥品價值?

回答

0

對於第一個問題:

您可以解析JSON,而不POJO類,但建議使用 它們和你正在stucking有關從JSON 生成它們可以使用jsonschema2pojo我覺得 是最好的。

而對於第二個:

Yest有用於JSON你可以找到他們在JSON網站的標準。

+0

謝謝您的回答。請檢查我編輯的問題。 – happycoder

0

步驟1:先用內最JSON對象,我可以看到開始是「藥」

創建一個POJO類,像這樣

public class Medicine implements android.os.Parcelable { 

@SerializedName("id") 
private String id; 

// Getter setter method for id 
// Do it for all the JSON tags 

} 

第2步:創建「medicineList類「這將有點像這樣

public class MedicineList implements Parcelable { 

@SerializedName("medicineList") 
private List<Medicine > medicine; 

// Getter setter can go here 
} 

以類似的方式只是在JSON響應中向外移動到基本標記。這使我很容易理解。我不會在EOD上發佈完整的解決方案。

+0

謝謝你的回答。請檢查我編輯的問題。 – happycoder

0

Q1的解決方案 -

是的,你可以通過安裝在Android Studio中的DTO插件使用的模型類解析上述響應。該插件將自動爲響應創建POJO類。

1
public class Medicine 
    { 
    private String id; 

private String name; 

private String category; 

private String image; 

private String indication; 

private boolean packed; 

private String med_id; 

private int dosage; 

public void setId(String id){ 
    this.id = id; 
} 
public String getId(){ 
    return this.id; 
} 
public void setName(String name){ 
    this.name = name; 
} 
public String getName(){ 
    return this.name; 
} 
public void setCategory(String category){ 
    this.category = category; 
} 
public String getCategory(){ 
    return this.category; 
} 
public void setImage(String image){ 
    this.image = image; 
} 
public String getImage(){ 
    return this.image; 
} 
public void setIndication(String indication){ 
    this.indication = indication; 
} 
public String getIndication(){ 
    return this.indication; 
} 
public void setPacked(boolean packed){ 
    this.packed = packed; 
} 
public boolean getPacked(){ 
    return this.packed; 
} 
public void setMed_id(String med_id){ 
    this.med_id = med_id; 
} 
public String getMed_id(){ 
    return this.med_id; 
} 
public void setDosage(int dosage){ 
    this.dosage = dosage; 
} 
public int getDosage(){ 
    return this.dosage; 
} 
} 






    import java.util.ArrayList; 
import java.util.List; 
public class Dosage 
    { 
private String id; 

private String packed; 

private List<Medicine> medicine; 

public void setId(String id){ 
    this.id = id; 
} 
public String getId(){ 
    return this.id; 
} 
public void setPacked(String packed){ 
    this.packed = packed; 
} 
public String getPacked(){ 
    return this.packed; 
} 
public void setMedicine(List<Medicine> medicine){ 
    this.medicine = medicine; 
} 
public List<Medicine> getMedicine(){ 
    return this.medicine; 
} 
} 


import java.util.ArrayList; 
import java.util.List; 
public class Band 
    { 
private String name; 

private List<Dosage> dosage; 

public void setName(String name){ 
    this.name = name; 
} 
public String getName(){ 
    return this.name; 
} 
public void setDosage(List<Dosage> dosage){ 
    this.dosage = dosage; 
} 
public List<Dosage> getDosage(){ 
    return this.dosage; 
} 
    } 


import java.util.ArrayList; 
    import java.util.List; 
    public class Timeline 
    { 
private DateTime Date; 

private List<Band> band; 

public void setDate(DateTime Date){ 
    this.Date = Date; 
} 
public DateTime getDate(){ 
    return this.Date; 
} 
public void setBand(List<Band> band){ 
    this.band = band; 
} 
public List<Band> getBand(){ 
    return this.band; 
} 
} 


public class Root 
{ 
private boolean error; 

private Timeline Timeline; 

public void setError(boolean error){ 
    this.error = error; 
} 
public boolean getError(){ 
    return this.error; 
} 
public void setTimeline(Timeline Timeline){ 
    this.Timeline = Timeline; 
} 
public Timeline getTimeline(){ 
    return this.Timeline; 
} 
    } 

... ...享受

+0

嗨Sanjana,我已經差不多完成了你的幫助和其他人。請告訴我如何獲得藥物價值? (請檢查我的編輯2) – happycoder