Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Parse dynamic array inside array using Retrofit

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;
    }
}
like image 849
RobinHood Avatar asked Feb 17 '26 20:02

RobinHood


1 Answers

Finally I achieved and its working, there was an issue with model class.

We just need to use below two model class.


DataModelUserStatement.class

public class DataModelUserStatement {
    @SerializedName("DATA")
    Map<String, List<List<Type>>> types;

    Integer SUCCESS;

    String MESSAGE;

    public Map<String, List<List<Type>>> getTypes() {
        return types;
    }

    public void setTypes(Map<String, List<List<Type>>> 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;



    }
}

and the Type one which I posted in Question.

like image 156
RobinHood Avatar answered Feb 19 '26 12:02

RobinHood



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!