This is my JSON response:
{
status: "ok",
count: 25,
categories: [
{
id: 60,
slug: "3d",
title: "3D",
description: "",
parent: 70,
post_count: 86
},
{
id: 2,
slug: "action-adventure",
title: "Action/Adventure",
description: "",
parent: 70,
post_count: 980
},
{
id: 61,
slug: "bollywood",
title: "Bollywood",
description: "",
parent: 0,
post_count: 747
},
{
id: 3,
slug: "comedy",
title: "Comedy",
description: "",
parent: 70,
post_count: 790
},
{
id: 14,
slug: "documentaries",
title: "Documentary",
description: "",
parent: 0,
post_count: 51
},
{
id: 4,
slug: "drama",
title: "Drama",
description: "",
parent: 70,
post_count: 1157
},
{
id: 70,
slug: "english-movies",
title: "English Movies",
description: "",
parent: 0,
post_count: 968
},
{
id: 5,
slug: "featured",
title: "Featured",
description: "",
parent: 0,
post_count: 166
},
{
id: 71,
slug: "hidden",
title: "Hidden",
description: "",
parent: 0,
post_count: 2
},
{
id: 12,
slug: "horror-thriller",
title: "Horror, Thriller",
description: "",
parent: 70,
post_count: 614
},
{
id: 63,
slug: "islam",
title: "Islam",
description: "",
parent: 0,
post_count: 159
},
{
id: 66,
slug: "islamic-documentaries",
title: "Islamic Documentaries",
description: "",
parent: 63,
post_count: 5
},
{
id: 67,
slug: "islamic-lectures",
title: "Islamic Lectures",
description: "",
parent: 63,
post_count: 1
},
{
id: 64,
slug: "islamic-movies",
title: "Islamic Movies",
description: "",
parent: 63,
post_count: 2
},
{
id: 6,
slug: "kids-family",
title: "Kids/Family",
description: "",
parent: 70,
post_count: 458
},
{
id: 7,
slug: "on-demand",
title: "On Demand",
description: "All requested movies by iVOD users falls here.",
parent: 0,
post_count: 1404
},
{
id: 8,
slug: "oscars-winners-collection",
title: "Oscars' Winners",
description: "",
parent: 70,
post_count: 87
},
{
id: 65,
slug: "quran",
title: "Quran",
description: "",
parent: 63,
post_count: 100
},
{
id: 9,
slug: "romance",
title: "Romance",
description: "",
parent: 70,
post_count: 316
},
{
id: 10,
slug: "science-fictionfantasy",
title: "Sci-Fi/Fantasy",
description: "",
parent: 70,
post_count: 427
},
{
id: 11,
slug: "short-movies",
title: "Short Films",
description: "",
parent: 70,
post_count: 22
},
{
id: 69,
slug: "tv",
title: "TV",
description: "",
parent: 0,
post_count: 529
},
{
id: 13,
slug: "tv-series",
title: "TV Series",
description: "",
parent: 69,
post_count: 499
},
{
id: 68,
slug: "visualquran-tv",
title: "VisualQuran.tv",
description: "",
parent: 63,
post_count: 53
},
{
id: 15,
slug: "western",
title: "Western",
description: "",
parent: 70,
post_count: 81
}
]
}
And my retrofit 2 interface:
interface VoDService {
@GET("get_category_index/")
Call<Category> vodCategories();
}
function to get the category lists and have also checked if the response is coming by using "HttpLoggingInterceptor":
HttpLoggingInterceptor logging = new HttpLoggingInterceptor();
logging.setLevel(HttpLoggingInterceptor.Level.BODY);
OkHttpClient.Builder httpClient = new OkHttpClient.Builder();
httpClient.addInterceptor(logging);
Retrofit retrofit = new Retrofit.Builder()
.baseUrl("http://vod.nayatel.com/api/")
.client(httpClient.build())
.addConverterFactory(GsonConverterFactory.create())
.build();
VoDService client = retrofit.create(VoDService.class);
Call<Category> call = client.vodCategories();
call.enqueue(new Callback<Category>() {
@Override
public void onResponse(Call<Category> call, Response<Category> response) {
if (response.isSuccessful()) {
Log.d(TAG, "onResponse: success!"+ response.raw().body().toString());
} else {
Log.d(TAG, "onResponse: unsuccessful");
}
}
@Override
public void onFailure(Call<Category> call, Throwable t) {
Log.d(TAG, "onFailure: " + t.toString());
}
});
And finally my Model class:
import com.google.gson.annotations.SerializedName;
class Category {
@SerializedName("id")
private Integer id;
@SerializedName("slug")
private String slug;
@SerializedName("title")
private String title;
@SerializedName("description")
private String description;
@SerializedName("parent")
private Integer parent;
@SerializedName("post_count")
private Integer postCount;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getSlug() {
return slug;
}
public void setSlug(String slug) {
this.slug = slug;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public Integer getParent() {
return parent;
}
public void setParent(Integer parent) {
this.parent = parent;
}
public Integer getPostCount() {
return postCount;
}
public void setPostCount(Integer postCount) {
this.postCount = postCount;
}
}
Now I can't get the response in the response.body. It's about the Model class. Should I write a custom parser? or any solution which gets me the Json in a list, I just need the count, category title.
Thanks in advance and please don't mark it as duplicate or anything.
See Question&Answers more detail:
os