3

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;
    }
}

1 Answer 1

2

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.

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.