I am using Retrofit to get my response of different APIs. One of these APIs is returning response with dynamic key within main response object. As we have to make response structure to map response through Retrofit. In my case I am unable to do this because of dynamic key response. Ho can I get this response through retrofit? My Sample response is:
"dynamic_key_xyz": [
{
"_id": "abc_id",
"user_data": {
"_id": "user_id",
"display_name": "abc",
},
}
],
"version": "1.0.0"
My RetrofitClient class is:
public static OkHttpClient okHttpClient = new OkHttpClient.Builder().callTimeout(120,
TimeUnit.SECONDS).readTimeout(120, TimeUnit.SECONDS).connectTimeout(120,
TimeUnit.SECONDS).writeTimeout(120, TimeUnit.SECONDS).build();
private static Retrofit retrofit = null;
/**
* making retrofit instance
*
* @return returning retrofit instance
*/
public static Retrofit getClient() {
if (retrofit == null) {
retrofit = new
Retrofit.Builder().baseUrl(Base_URL).addConverterFactory(
GsonConverterFactory.create()).client(okHttpClient).build();
}
return retrofit;
}
In ApiInterface, API endpoint is like:
@Headers({"Accept: application/json", "Content-Type: application/json"})
@POST("/api/message/read")
Call<ReadMessagesResponse> readMessages(@Header("token") String token, @Body
JsonObject JsonObject);
I am calling API like this:
protected void callReadMessagesApi(JsonObject jsonObject) {
try {
getApiInterface().readMessages(userToken, jsonObject).enqueue(new
Callback<ReadMessagesResponse>() {
@Override
public void onResponse(Call<ReadMessagesResponse> call,
Response<ReadMessagesResponse> response) {
}
@Override
public void onFailure(Call<ReadMessagesResponse> call, Throwable t) {
}
});
} catch (Exception e) {
}
}
My main response class (ReadMessagesResponse) is like:
public class ReadMessagesResponse {
@SerializedName("Messages")
@Expose
private List<Message> messages = null;
@SerializedName("version")
@Expose
private String version;
public List<Message> getMessages() {
return messages;
}
public void setMessages(List<Message> messages) {
this.messages = messages;
}
}
I tried this link but unable to resolve my issue