I'm using POJO classes which have getters and setters. However, due to this dynamic behaviour i would be forced to use the deserialising part. I've implemented the code for that as well, however is there any other way to handle this. Because, the below pasted response is just a small part of the actual response (which is massive and i'm using POJO getters and setters for it)
OBJECT
secondaryUser: {
id: 1,
username: "admin",
numberOfFollowers: 1,
displayName: "admin"
}
ARRAY
secondaryUser: [
{
id: 18150,
activityDateTime: "2015-07-20 14:46:02",
user: {
id: 1,
username: "admin",
numberOfFollowers: 1,
displayName: "admin"
}
},
{
id: 18148,
activityDateTime: "2015-07-20 13:35:02",
user: {
id: 3,
username: "USER_1",
numberOfFollowers: 4,
displayName: "USER_1"
}
},
{
id: 18146,
activityDateTime: "2015-07-20 11:29:41",
user: {
id: 2468,
username: "USER_2",
numberOfFollowers: 1,
displayName: "USER_2"
}
}
]
}
I hope this will solve your problem.
First of all, in your case, if you have declared secondaryUser as object or Array, change it to
List<SecondaryUser> secondaryUser
Create a deserializer.
DynamicJsonConverter.java
Your Rest Adapter class.
BasePathAdapterForDynamicJSONKeys.java
Also, use the callback as
Callback<String>()
instead ofCallback<YourObject>()
Now, inside the your activity/fragment, inside the success method of retrofit callback, use this.
And finally, dump this inside your arraylist.(This is basically conversion of JSON array to arraylist :))