Java 改装的正确JSON响应+;格森?

Java 改装的正确JSON响应+;格森?,java,android,json,retrofit2,gson,Java,Android,Json,Retrofit2,Gson,我对我的一个web服务有以下回应,我正在使用改型和GSON { "error": false, "Timeline": { "Date": "2040-06-15", "bandList": { "breakfast": { "dosageList": { "01": { "packed": "tr

我对我的一个web服务有以下回应,我正在使用改型和GSON

    {
    "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
                                }
                            }
                        ]
                    }
                }
            }
        }
    }
}
问题1。 有没有一种方法可以使用模型类(POJO)或不使用它们来解析上述响应?我一直在为上面的结构生成模型类。如何为上述JSON生成POJO

问题2。我正处于如何说服发送以下响应的位置,JSON的正确结构/格式是什么?是否有任何JSON标准可以向web开发人员展示以获得这种JSON格式?(注意:我可以解析这个结构)

}

先谢谢你

编辑

我曾经使用这些站点自动生成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;
    }
}
编辑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));
          }
   }

}
for(字符串bandName:event.getTimeline().getBand().keySet()){
Log.d(“,”Value“+event.getTimeline().getBand().get(bandName));
Band Band=event.getTimeline().getBand().get(bandName);
对于(字符串dosageName:band.getdose().keySet()){
剂量剂量=band.getdose().get(dosageName);
Log.d(“,”Value“+剂量.getMedicine());
用于(药物:剂量。getMedicine()){
Log.d(“,”值“+剂量.getMedicine().get(0));
}
}
}
如何检索药品价值?

关于第一个问题:

您可以在不使用POJO类的情况下解析JSON,但建议使用 他们和你都在犹豫从JSON生成他们 我想你可以用 这是最好的

对于第二个问题:


是的,JSON有一些标准,你可以在网站上找到它们。

步骤1:首先从最里面的JSON对象开始,我能看到的是“medicine”

创建一个类似这样的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

}
public class MedicineList implements Parcelable {

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

// Getter setter can go here
}
步骤2:为“medicineList”创建一个类

public class Medicine implements android.os.Parcelable {

@SerializedName("id")
private String id;

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

}
public class MedicineList implements Parcelable {

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

// Getter setter can go here
}
公共类MedicineList实现可包裹{
@序列化名称(“药物列表”)
私人列表医学;
//盖特·塞特可以到这里来
}
以类似的方式,只需在JSON响应中移动到基本标记的外部。这让我很容易理解。我没有发布完整的解决方案,因为这是你在EOD的家庭作业。

第一季度的解决方案-

是的,您可以通过在Android Studio中安装DTO插件,使用模型类解析上述响应。插件将自动为响应创建POJO类

公共级医学
 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;
}
  }
{ 私有字符串id; 私有字符串名称; 私有字符串类别; 私有字符串图像; 私有字符串指示; 私有布尔压缩; 私有字符串med_id; 私人剂量; 公共无效集合id(字符串id){ this.id=id; } 公共字符串getId(){ 返回此.id; } 公共void集合名(字符串名){ this.name=名称; } 公共字符串getName(){ 返回此.name; } 公共无效集合类别(字符串类别){ this.category=类别; } 公共字符串getCategory(){ 返回此.category; } 公共void setImage(字符串图像){ 这个图像=图像; } 公共字符串getImage(){ 返回此.image; } 公共无效设置指示(字符串指示){ 这个指示=指示; } 公共字符串getIndication(){ 返回此项指示; } 公共void集合压缩(布尔压缩){ 这是包装好的; } 公共布尔getPacked(){ 把这个包装好的还给我; } 公共无效设置med_id(字符串med_id){ this.med_id=med_id; } 公共字符串getMed_id(){ 返回此.med_id; } 公共剂量(国际剂量){ 这个剂量=剂量; } 公共剂量{ 退回这个剂量; } } 导入java.util.ArrayList; 导入java.util.List; 公共级剂量 { 私有字符串id; 私有字符串压缩; 私人列表医学; 公共无效集合id(字符串id){ this.id=id; } 公共字符串getId(){ 返回此.id; } 公共无效设置压缩(字符串压缩){ 这是包装好的; } 公共字符串getPacked(){ 把这个包装好的还给我; } 公共医学(列表医学){ 这是医学; } 公共医疗清单(){ 还这个药; } } 导入java.util.ArrayList; 导入java.util.List; 公营乐队 { 私有字符串名称; 私人列表剂量; 公共void集合名(字符串名){ this.name=名称; } 公共字符串getName(){ 返回此.name; } 公共剂量(列表剂量){ 这个剂量=剂量; } 公共列表{ 退回这个剂量; } } 导入java.util.ArrayList; 导入java.util.List; 公共类时间线 { 私人日期时间日期; 私人名单波段; 公共作废设置日期(日期时间日期){ 这个日期=日期; } public DateTime getDate(){ 返回此日期; } 公共区域和(列表栏){ 这个.波段=波段; } 公共列表getBand(){ 返回此.band; } } 公共类根 { 私有布尔错误; 私人时间表; public void setError(布尔错误){ this.error=错误; } 公共布尔getError(){ 返回这个错误; } 公共无效集合时间线(时间线){ 时间线=时间线; } 公共时间线getTimeline(){ 返回此。时间线; } }

…享受…

谢谢您的回答。请检查我编辑的问题。谢谢你的回答。请检查我编辑的问题。嗨,桑贾娜,在你和其他人的帮助下,我几乎完成了。请告诉我如何获得药品价值?(请检查我的编辑2)