-2

I try to response nested json data parsing but I cant. Below code is my nestded json.

{
"Result": [
{
  "Stock": {
    "ID": 1,
    "Code": "sample string 2",
    "SerialNo": "sample string 3",
    "RFID": "sample string 4",
    "PairCode": "sample string 5",
    "Barcode": "sample string 6",
    "Name": "sample string 7",
    "Description": "sample string 8",
    "Model": "sample string 9",
    "CategoryId": 1,
    "BrandId": 1,
    "ClassificationId": 1
  },
  "Division": {
    "ID": 1,
    "Name": "sample string 2",
    "ParentID": 1,
    "Path": "sample string 3"
  },
  "User": {
    "ID": 1,
    "Name": "sample string 2",
    "Username": "sample string 3",
    "Password": "sample string 4"
  }
},
{
  "Stock": {
    "ID": 1,
    "Code": "sample string 2",
    "SerialNo": "sample string 3",
    "RFID": "sample string 4",
    "PairCode": "sample string 5",
    "Barcode": "sample string 6",
    "Name": "sample string 7",
    "Description": "sample string 8",
    "Model": "sample string 9",
    "CategoryId": 1,
    "BrandId": 1,
    "ClassificationId": 1
  },
  "Division": {
    "ID": 1,
    "Name": "sample string 2",
    "ParentID": 1,
    "Path": "sample string 3"
  },
  "User": {
    "ID": 1,
    "Name": "sample string 2",
    "Username": "sample string 3",
    "Password": "sample string 4"
  }
},
{
  "Stock": {
    "ID": 1,
    "Code": "sample string 2",
    "SerialNo": "sample string 3",
    "RFID": "sample string 4",
    "PairCode": "sample string 5",
    "Barcode": "sample string 6",
    "Name": "sample string 7",
    "Description": "sample string 8",
    "Model": "sample string 9",
    "CategoryId": 1,
    "BrandId": 1,
    "ClassificationId": 1
  },
  "Division": {
    "ID": 1,
    "Name": "sample string 2",
    "ParentID": 1,
    "Path": "sample string 3"
  },
  "User": {
    "ID": 1,
    "Name": "sample string 2",
    "Username": "sample string 3",
    "Password": "sample string 4"
  }
}
],
"RecordCount": 1
}

And this my Response Class

public class ResultResponseModel<T>{

public int RecordCount;

public T Result[];

public int getRecordCount() {
    return RecordCount;
}

public void setRecordCount(int recordCount) {
    RecordCount = recordCount;
}

public T[] getResult() {
    return Result;
}

public void setResult(T[] result) {
    Result = result;
}

}

the other class

public class ServiceStockDivisionUserModel {

public ServiceStockDivisionUserModel()
{
    Stock = new ServiceStockModel();

    Division = new ServiceDivisionModel();

    User = new ServiceUserModel();
}

public ServiceStockModel Stock ;

public ServiceDivisionModel Division ;

public ServiceUserModel User ;


public ServiceStockModel getStock() {
    return Stock;
}

public void setStock(ServiceStockModel stock) {
    Stock = stock;
}

public ServiceDivisionModel getDivision() {
    return Division;
}

public void setDivision(ServiceDivisionModel division) {
    Division = division;
}

public ServiceUserModel getUser() {
    return User;
}

public void setUser(ServiceUserModel user) {
    User = user;
}

}

I try to cast my json ResultResponseModel after that cast ServiceStockDivisionUserMopdel to get as object. But I can not cast, Any one can help me. Thanks.

My Reason:

 JSONObject jsonObj = new JSONObject(responseModel.responseString);

 Gson gson = new Gson();

 listResultResponseModel = gson.fromJson(String.valueOf(jsonObj), ResultResponseModel.class);

enter image description here

artemitSoft
  • 286
  • 5
  • 17

2 Answers2

1

Here you parse the actual response you get from server or other resource

JSONArray result = response.optJSONArray("Result");
        int length = result.length();
        for(int i=0; i<length; i++){
            JSONObject userData = result.optJSONObject(i);
            User user = new User(userData.optJSONObject("User"));
            Division division  = new Division(userData.optJSONObject("Division"));
            Stock stock = new Stock(userData.optJSONObject("Stock"));
        }

User.java

    public class User{

        private int ID;
        private String Code;
        //and other variables for UserData


        public User(JSONObject userData) {
            this.ID = userData.optInt("ID");
            this.Code = userData.optString("Code");
            //similar initializations for other variables
        }

        public int getID() {
            return ID;
        }

        public String getCode() {
            return Code;
        }
    }

Similar way you need to create Classes for Stock and Division and handle JSON internally.

Mohammed Atif
  • 4,383
  • 7
  • 28
  • 57
0
FullResponse model = new Gson().fromJson(JSON_STRING, FullResponse.class);

Make the model like this.

public class FullResponse{
     List<ResultResponse> Result;
     int RecordCount;

     //setter and getter
}

public class ResultResponse{
     StockResponse Stock;
     DivisionResponse Division;
     UserResponse User;

     //setter and getter
}

public class StockResponse{
     int ID;
     String Code;
     .... 

     //getter
}

public class DivisionResponse{
     int ID;
     String Name;
     .... 

     //getter
}

public class UserResponse{
     int ID;
     String Name;
     .... 

     //getter
}

Optional

If you want to check whether your json if valid or not..

public boolean isJSONValid(String test) {
    try {
        new JSONObject(test);
    } catch (JSONException ex) {
        try {
            new JSONArray(test);
        } catch (JSONException ex1) {
            return false;
        }
    }
    return true;
}
ZeroOne
  • 8,996
  • 4
  • 27
  • 45