I'm trying to parse below data structure using Retrofit which having dynamic array collection inside that another dynamic array collection.
Does model classes are okay or there is an issue with server response?
Structure#
{
"DATA": {
"2015": [
[
],
[
],
[
],
[
],
[
],
[
{
"fAmount": "1000",
"paydate": "07\/29\/2015",
"vName": "Mr. mule",
"vPropertyStreet": "Street light",
"vPropertyState": "test2",
"vPropertyZipcode": "2222222",
"vPropertyCity": "test2",
"type": "Credit",
"vPdfURL": "url"
},
{
"fAmount": "1000",
"paydate": "07\/29\/2015",
"vName": "new",
"vPropertyStreet": "Street light",
"vPropertyState": "test2",
"vPropertyZipcode": "2222222",
"vPropertyCity": "test2",
"type": "Charge",
"vPdfURL": "url"
},
{
"fAmount": "1000",
"paydate": "07\/29\/2015",
"vName": "Mr. mule",
"vPropertyStreet": "Street light",
"vPropertyState": "test2",
"vPropertyZipcode": "2222222",
"vPropertyCity": "test2",
"type": "Credit",
"vPdfURL": "url"
}
],
[
],
[
],
[
],
[
],
[
],
[
]
]
},
"SUCCESS": 1
}
Error#
com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_OBJECT
Tried#
public class DataModelUserStatement {
@SerializedName("DATA")
Map<String, List<DataModelUserStatementSub>> types;
Integer SUCCESS;
String MESSAGE;
public Map<String, List<DataModelUserStatementSub>> getTypes() {
return types;
}
public void setTypes(Map<String, List<DataModelUserStatementSub>> types) {
this.types = types;
}
public Integer getSUCCESS() {
return SUCCESS;
}
public void setSUCCESS(Integer SUCCESS) {
this.SUCCESS = SUCCESS;
}
public String getMESSAGE() {
return MESSAGE;
}
public void setMESSAGE(String MESSAGE) {
this.MESSAGE = MESSAGE;
}
}
public class DataModelUserStatementSub {
Map<String, List<Type>> types;
public Map<String, List<Type>> getTypes() {
return types;
}
public void setTypes(Map<String, List<Type>> types) {
this.types = types;
}
}
public class Type {
@SerializedName("fAmount") private String fAmount;
@SerializedName("paydate") private String paydate;
@SerializedName("vName") private String vName;
@SerializedName("vPropertyStreet") private String vPropertyStreet;
@SerializedName("vPropertyState") private String vPropertyState;
@SerializedName("vPropertyZipcode") private String vPropertyZipcode;
@SerializedName("vPropertyCity") private String vPropertyCity;
@SerializedName("type") private String type;
@SerializedName("vPdfURL") private String vPdfURL;
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public String getvPdfURL() {
return vPdfURL;
}
public void setvPdfURL(String vPdfURL) {
this.vPdfURL = vPdfURL;
}
public String getfAmount() {
return fAmount;
}
public void setfAmount(String fAmount) {
this.fAmount = fAmount;
}
public String getPaydate() {
return paydate;
}
public void setPaydate(String paydate) {
this.paydate = paydate;
}
public String getvName() {
return vName;
}
public void setvName(String vName) {
this.vName = vName;
}
public String getvPropertyStreet() {
return vPropertyStreet;
}
public void setvPropertyStreet(String vPropertyStreet) {
this.vPropertyStreet = vPropertyStreet;
}
public String getvPropertyState() {
return vPropertyState;
}
public void setvPropertyState(String vPropertyState) {
this.vPropertyState = vPropertyState;
}
public String getvPropertyZipcode() {
return vPropertyZipcode;
}
public void setvPropertyZipcode(String vPropertyZipcode) {
this.vPropertyZipcode = vPropertyZipcode;
}
public String getvPropertyCity() {
return vPropertyCity;
}
public void setvPropertyCity(String vPropertyCity) {
this.vPropertyCity = vPropertyCity;
}
}