2017-10-13 4 views
-4

これはバレーボールからのレスポンスJSONです:解析するためのすべての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); 
     } 
    }*/ 

コム.google.gson.JsonSyntaxException:java.lang.IllegalStateException: 予想されるBEGIN_ARRAY bu tはBEGIN_OBJECTは行1列24パス $ .dataの
com.google.gson.internal.bind.ReflectiveTypeAdapterFactory $ Adapter.read

+5

[Gsonが期待するBEGIN \ _ARRAYは複製できますが、1行目の列62ではSTRINGでした](https://stackoverflow.com/questions/16380367/gson-expected-begin-array-but-was-string-at-ライン1列62) –

答えて

0

にあったデータを再確認してください。多分それは怒鳴る

{ 
    "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; 
    } 
} 
0

あなたの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; 
} 

} 

P. 私はそれをパーセル可能にしていない、私はあなた自身でそれを行うことができると思います。

関連する問題