簡體   English   中英

如何解析所有 json 對象並將它們發送到一個類中?

[英]How to parse all json objects and send them inside a class?

這是來自 Volley 的響應 JSON:

   {  
   "status":true,
   "data":{  
      "product_id":"12",
      "product_ogpm_id":"OGPR1000485",
      "product_part_number":"6ED1 057-1AA01-0BA0",
      "escape_part_number":"6ed10571aa010ba0",
      "product_name":"USB PC Cable",
      "product_uom":"",
      "product_image":"",
      "product_description":"",
      "product_manufacturer":"Siemens",
      "manufacturer_id":"4",
      "replace_id":"0",
      "replace_date":"0000-00-00 00:00:00",
      "product_added_date":"2017-09-12 00:57:15",
      "product_added_by":"Jayank Chopra",
      "product_modified_date":"0000-00-00 00:00:00",
      "product_modified_by":"",
      "product_status":"1",
      "manufacturer_name":"Siemens",
      "contracted_id":"1",
      "data_sheets":[  

      ]
   },
   "message":"Product found!"
}

對於解析,我使用 Gson 像這樣:

   /*  BarcodeSearchResponse responseObj = new Gson().fromJson(responseJson.toString(), BarcodeSearchResponse.class);
        where BarcodeSearchResponse class is this:
        public class BarcodeSearchResponse{
            public ArrayList<ScanData> data;
        }
   */                          

ScanData 是一個包含以下內容的類:

 public class ScanData implements Parcelable{

        @SerializedName("product_id")
        @Expose
        private String productId;
        @SerializedName("product_ogpm_id")
        @Expose
        private String productOgpmId;
        @SerializedName("product_part_number")
        @Expose
        private String productPartNumber;
        @SerializedName("escape_part_number")
        @Expose
        private String escapePartNumber;
        @SerializedName("product_name")
        @Expose
        private String productName;
        @SerializedName("product_uom")
        @Expose
        private String productUom;
        @SerializedName("product_image")
        @Expose
        private String productImage;
        @SerializedName("product_description")
        @Expose
        private String productDescription;
        @SerializedName("product_manufacturer")
        @Expose
        private String productManufacturer;
        @SerializedName("manufacturer_id")
        @Expose
        private String manufacturerId;
        @SerializedName("replace_id")
        @Expose
        private String replaceId;
        @SerializedName("replace_date")
        @Expose
        private String replaceDate;
        @SerializedName("product_added_date")
        @Expose
        private String productAddedDate;
        @SerializedName("product_added_by")
        @Expose
        private String productAddedBy;
        @SerializedName("product_modified_date")
        @Expose
        private String productModifiedDate;
        @SerializedName("product_modified_by")
        @Expose
        private String productModifiedBy;
        @SerializedName("product_status")
        @Expose
        private String productStatus;
        @SerializedName("manufacturer_name")
        @Expose
        private String manufacturerName;
        @SerializedName("contracted_id")
        @Expose
        private String contractedId;
        @SerializedName("data_sheets")
        @Expose
        private List<Object> dataSheets = null;

        protected ScanData(Parcel in) {
            productId = in.readString();
            productOgpmId = in.readString();
            productPartNumber = in.readString();
            escapePartNumber = in.readString();
            productName = in.readString();
            productUom = in.readString();
            productImage = in.readString();
            productDescription = in.readString();
            productManufacturer = in.readString();
            manufacturerId = in.readString();
            replaceId = in.readString();
            replaceDate = in.readString();
            productAddedDate = in.readString();
            productAddedBy = in.readString();
            productModifiedDate = in.readString();
            productModifiedBy = in.readString();
            productStatus = in.readString();
            manufacturerName = in.readString();
            contractedId = in.readString();
        }

        public static final Creator<ScanData> CREATOR = new Creator<ScanData>() {
            @Override
            public ScanData createFromParcel(Parcel in) {
                return new ScanData(in);
            }

            @Override
            public ScanData[] newArray(int size) {
                return new ScanData[size];
            }
        };

        public String getProductId() {
            return productId;
        }

        public void setProductId(String productId) {
            this.productId = productId;
        }

        public String getProductOgpmId() {
            return productOgpmId;
        }

        public void setProductOgpmId(String productOgpmId) {
            this.productOgpmId = productOgpmId;
        }

        public String getProductPartNumber() {
            return productPartNumber;
        }

        public void setProductPartNumber(String productPartNumber) {
            this.productPartNumber = productPartNumber;
        }

        public String getEscapePartNumber() {
            return escapePartNumber;
        }

        public void setEscapePartNumber(String escapePartNumber) {
            this.escapePartNumber = escapePartNumber;
        }

        public String getProductName() {
            return productName;
        }

        public void setProductName(String productName) {
            this.productName = productName;
        }

        public String getProductUom() {
            return productUom;
        }

        public void setProductUom(String productUom) {
            this.productUom = productUom;
        }

        public String getProductImage() {
            return productImage;
        }

        public void setProductImage(String productImage) {
            this.productImage = productImage;
        }

        public String getProductDescription() {
            return productDescription;
        }

        public void setProductDescription(String productDescription) {
            this.productDescription = productDescription;
        }

        public String getProductManufacturer() {
            return productManufacturer;
        }

        public void setProductManufacturer(String productManufacturer) {
            this.productManufacturer = productManufacturer;
        }

        public String getManufacturerId() {
            return manufacturerId;
        }

        public void setManufacturerId(String manufacturerId) {
            this.manufacturerId = manufacturerId;
        }

        public String getReplaceId() {
            return replaceId;
        }

        public void setReplaceId(String replaceId) {
            this.replaceId = replaceId;
        }

        public String getReplaceDate() {
            return replaceDate;
        }

        public void setReplaceDate(String replaceDate) {
            this.replaceDate = replaceDate;
        }

        public String getProductAddedDate() {
            return productAddedDate;
        }

        public void setProductAddedDate(String productAddedDate) {
            this.productAddedDate = productAddedDate;
        }

        public String getProductAddedBy() {
            return productAddedBy;
        }

        public void setProductAddedBy(String productAddedBy) {
            this.productAddedBy = productAddedBy;
        }

        public String getProductModifiedDate() {
            return productModifiedDate;
        }

        public void setProductModifiedDate(String productModifiedDate) {
            this.productModifiedDate = productModifiedDate;
        }

        public String getProductModifiedBy() {
            return productModifiedBy;
        }

        public void setProductModifiedBy(String productModifiedBy) {
            this.productModifiedBy = productModifiedBy;
        }

        public String getProductStatus() {
            return productStatus;
        }

        public void setProductStatus(String productStatus) {
            this.productStatus = productStatus;
        }

        public String getManufacturerName() {
            return manufacturerName;
        }

        public void setManufacturerName(String manufacturerName) {
            this.manufacturerName = manufacturerName;
        }

        public String getContractedId() {
            return contractedId;
        }

        public void setContractedId(String contractedId) {
            this.contractedId = contractedId;
        }

        public List<Object> getDataSheets() {
            return dataSheets;
        }

        public void setDataSheets(List<Object> dataSheets) {
            this.dataSheets = dataSheets;
        }


        @Override
        public int describeContents() {
            return 0;
        }

        @Override
        public void writeToParcel(Parcel parcel, int i) {
            parcel.writeString(productId);
            parcel.writeString(productOgpmId);
            parcel.writeString(productPartNumber);
            parcel.writeString(escapePartNumber);
            parcel.writeString(productName);
            parcel.writeString(productUom);
            parcel.writeString(productImage);
            parcel.writeString(productDescription);
            parcel.writeString(productManufacturer);
            parcel.writeString(manufacturerId);
            parcel.writeString(replaceId);
            parcel.writeString(replaceDate);
            parcel.writeString(productAddedDate);
            parcel.writeString(productAddedBy);
            parcel.writeString(productModifiedDate);
            parcel.writeString(productModifiedBy);
            parcel.writeString(productStatus);
            parcel.writeString(manufacturerName);
            parcel.writeString(contractedId);
        }
    }*/

com.google.gson.JsonSyntaxException:java.lang.IllegalStateException:預期為 BEGIN_ARRAY,但在第 1 行第 24 列路徑 $.data 處為 BEGIN_OBJECT
com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read

請重新檢查您的數據。 也許它看起來像波紋管

{
  "status": true,
  "data": [
    {
      "product_id": "12",
      "product_ogpm_id": "OGPR1000485",
      "product_part_number": "6ED1 057-1AA01-0BA0",
      "escape_part_number": "6ed10571aa010ba0",
      "product_name": "USB PC Cable",
      "product_uom": "",
      "product_image": "",
      "product_description": "",
      "product_manufacturer": "Siemens",
      "manufacturer_id": "4",
      "replace_id": "0",
      "replace_date": "0000-00-00 00:00:00",
      "product_added_date": "2017-09-12 00:57:15",
      "product_added_by": "Jayank Chopra",
      "product_modified_date": "0000-00-00 00:00:00",
      "product_modified_by": "",
      "product_status": "1",
      "manufacturer_name": "Siemens",
      "contracted_id": "1",
      "data_sheets": []
    },
    {
      "product_id": "13",
      "product_ogpm_id": "OGPR1000485",
      "product_part_number": "6ED1 057-1AA01-0BA0",
      "escape_part_number": "6ed10571aa010ba0",
      "product_name": "USB PC Cable",
      "product_uom": "",
      "product_image": "",
      "product_description": "",
      "product_manufacturer": "Siemens",
      "manufacturer_id": "4",
      "replace_id": "0",
      "replace_date": "0000-00-00 00:00:00",
      "product_added_date": "2017-09-12 00:57:15",
      "product_added_by": "Jayank Chopra",
      "product_modified_date": "0000-00-00 00:00:00",
      "product_modified_by": "",
      "product_status": "1",
      "manufacturer_name": "Siemens",
      "contracted_id": "1",
      "data_sheets": []
    }
  ],
  "message": "Product found!"
}

或者如果它與您發布的相同,請確保 BarcodeSearchResponse 如下所示:

import com.google.gson.annotations.Expose;
import com.google.gson.annotations.SerializedName;

public class BarcodeSearchResponse {

    @SerializedName("status")
    @Expose
    private boolean status;
    @SerializedName("data")
    @Expose
    private ScanData data;
    @SerializedName("message")
    @Expose
    private String message;

    public boolean isStatus() {
        return status;
    }

    public void setStatus(boolean status) {
        this.status = status;
    }

    public ScanData getData() {
        return data;
    }

    public void setData(ScanData data) {
        this.data = data;
    }

    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }
}

你的 POJO 看起來不對。 您的數據類應如下所示。

public class Data {

@SerializedName("product_id")
@Expose
private String productId;
@SerializedName("product_ogpm_id")
@Expose
private String productOgpmId;
@SerializedName("product_part_number")
@Expose
private String productPartNumber;
@SerializedName("escape_part_number")
@Expose
private String escapePartNumber;
@SerializedName("product_name")
@Expose
private String productName;
@SerializedName("product_uom")
@Expose
private String productUom;
@SerializedName("product_image")
@Expose
private String productImage;
@SerializedName("product_description")
@Expose
private String productDescription;
@SerializedName("product_manufacturer")
@Expose
private String productManufacturer;
@SerializedName("manufacturer_id")
@Expose
private String manufacturerId;
@SerializedName("replace_id")
@Expose
private String replaceId;
@SerializedName("replace_date")
@Expose
private String replaceDate;
@SerializedName("product_added_date")
@Expose
private String productAddedDate;
@SerializedName("product_added_by")
@Expose
private String productAddedBy;
@SerializedName("product_modified_date")
@Expose
private String productModifiedDate;
@SerializedName("product_modified_by")
@Expose
private String productModifiedBy;
@SerializedName("product_status")
@Expose
private String productStatus;
@SerializedName("manufacturer_name")
@Expose
private String manufacturerName;
@SerializedName("contracted_id")
@Expose
private String contractedId;
@SerializedName("data_sheets")
@Expose
private List<Object> dataSheets = null;

public String getProductId() {
return productId;
}

public void setProductId(String productId) {
this.productId = productId;
}

public String getProductOgpmId() {
return productOgpmId;
}

public void setProductOgpmId(String productOgpmId) {
this.productOgpmId = productOgpmId;
}

public String getProductPartNumber() {
return productPartNumber;
}

public void setProductPartNumber(String productPartNumber) {
this.productPartNumber = productPartNumber;
}

public String getEscapePartNumber() {
return escapePartNumber;
}

public void setEscapePartNumber(String escapePartNumber) {
this.escapePartNumber = escapePartNumber;
}

public String getProductName() {
return productName;
}

public void setProductName(String productName) {
this.productName = productName;
}

public String getProductUom() {
return productUom;
}

public void setProductUom(String productUom) {
this.productUom = productUom;
}

public String getProductImage() {
return productImage;
}

public void setProductImage(String productImage) {
this.productImage = productImage;
}

public String getProductDescription() {
return productDescription;
}

public void setProductDescription(String productDescription) {
this.productDescription = productDescription;
}

public String getProductManufacturer() {
return productManufacturer;
}

public void setProductManufacturer(String productManufacturer) {
this.productManufacturer = productManufacturer;
}

public String getManufacturerId() {
return manufacturerId;
}

public void setManufacturerId(String manufacturerId) {
this.manufacturerId = manufacturerId;
}

public String getReplaceId() {
return replaceId;
}

public void setReplaceId(String replaceId) {
this.replaceId = replaceId;
}

public String getReplaceDate() {
return replaceDate;
}

public void setReplaceDate(String replaceDate) {
this.replaceDate = replaceDate;
}

public String getProductAddedDate() {
return productAddedDate;
}

public void setProductAddedDate(String productAddedDate) {
this.productAddedDate = productAddedDate;
}

public String getProductAddedBy() {
return productAddedBy;
}

public void setProductAddedBy(String productAddedBy) {
this.productAddedBy = productAddedBy;
}

public String getProductModifiedDate() {
return productModifiedDate;
}

public void setProductModifiedDate(String productModifiedDate) {
this.productModifiedDate = productModifiedDate;
}

public String getProductModifiedBy() {
return productModifiedBy;
}

public void setProductModifiedBy(String productModifiedBy) {
this.productModifiedBy = productModifiedBy;
}

public String getProductStatus() {
return productStatus;
}

public void setProductStatus(String productStatus) {
this.productStatus = productStatus;
}

public String getManufacturerName() {
return manufacturerName;
}

public void setManufacturerName(String manufacturerName) {
this.manufacturerName = manufacturerName;
}

public String getContractedId() {
return contractedId;
}

public void setContractedId(String contractedId) {
this.contractedId = contractedId;
}

public List<Object> getDataSheets() {
return dataSheets;
}

public void setDataSheets(List<Object> dataSheets) {
this.dataSheets = dataSheets;
}

}

並且您的 ScanData 類應如下使用此數據類。

public class ScanData {

@SerializedName("status")
@Expose
private Boolean status;
@SerializedName("data")
@Expose
private Data data;
@SerializedName("message")
@Expose
private String message;

public Boolean getStatus() {
return status;
}

public void setStatus(Boolean status) {
this.status = status;
}

public Data getData() {
return data;
}

public void setData(Data data) {
this.data = data;
}

public String getMessage() {
return message;
}

public void setMessage(String message) {
this.message = message;
}

}

PS 我沒有讓它可打包,我想你可以自己做。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM