У меня возникла странная проблема при анализе ответа json
через retrofit2
. На самом деле у меня есть родительская категория, которая имеет разные подкатегории, которые могут быть разными (динамическими), но не исправить Одна родительская категория имеет 2 подкатегории, в то время как другие имеют 5 или могут быть 1 подкатегория. Таким образом, ответ приходит в этом отношении.
Я использую библиотеки для модификации и gson
для получения ответа json
.
Ниже приведен фрагмент кода, который я уже использовал
public class CategoryDetails {
@SerializedName("icon")
@Expose
private String icon;
@SerializedName("childs")
@Expose
private List<ChildCategoryDetail> childList;
@SerializedName("categories_id")
@Expose
private String id;
@SerializedName("image")
@Expose
private String image;
@SerializedName("categories_name")
@Expose
private String name;
@SerializedName("parent_id")
@Expose
private String parentId;
@SerializedName("total_products")
@Expose
private String totalProducts;
public String getTotalProducts() {
return totalProducts;
}
public void setTotalProducts(String totalProducts) {
this.totalProducts = totalProducts;
}
public List<ChildCategoryDetail> getChildList() {
return childList;
}
public void setChildList(List<ChildCategoryDetail> childList) {
this.childList = childList;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getImage() {
return image;
}
public void setImage(String image) {
this.image = image;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getParentId() {
return parentId;
}
public void setParentId(String parentId) {
this.parentId = parentId;
}
public String getIcon() {
return icon;
}
public void setIcon(String icon) {
this.icon = icon;
}
}
И для его подкатегорий
public class ChildCategoryDetail {
@SerializedName("icon")
@Expose
private String icon;
@SerializedName("categories_id")
@Expose
private String id;
@SerializedName("image")
@Expose
private String image;
@SerializedName("categories_name")
@Expose
private String name;
@SerializedName("parent_id")
@Expose
private String parentId;
@SerializedName("total_products")
@Expose
private String totalProducts;
public String getTotalProducts() {
return totalProducts;
}
public void setTotalProducts(String totalProducts) {
this.totalProducts = totalProducts;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getImage() {
return image;
}
public void setImage(String image) {
this.image = image;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getParentId() {
return parentId;
}
public void setParentId(String parentId) {
this.parentId = parentId;
}
public String getIcon() {
return icon;
}
public void setIcon(String icon) {
this.icon = icon;
}
}
И логика, где я использую это здесь ниже
// Get CategoriesList from AppContext
allCategoriesList = ((App) getContext().getApplicationContext()).getCategoriesList();
int size = allCategoriesList.size();
allSubCategoriesList = new ArrayList<>();
// Get SubCategoriesList from AllCategoriesList
for (int i=0; i<allCategoriesList.size(); i++) {
int sizeStr = allCategoriesList.get(i).getChildList().size();
for (int j=0;j<allCategoriesList.get(i).getChildList().size();j++) {
allSubCategoriesList.add(allCategoriesList.get(i).getChildList().get(j));
}
}
Только из вышеупомянутой логики я могу пройти первый уровень подкатегории, а не внутренний второй или третий и так далее ...
Хорошо, JSON
{
"success": "1",
"data": [
{
"categories_id": 3,
"categories_name": "Boy's Clothing",
"parent_id": 0,
"image": "images/media/2019/07/yvWJL03110.png",
"icon": "images/media/2019/07/yvWJL03110.png",
"vendors_id": 3,
"total_products": 16,
"childs": [
{
"categories_id": 22,
"categories_name": "Boy Polo shirts",
"parent_id": 3,
"image": "images/media/2019/07/yvWJL03110.png",
"icon": "images/media/2019/07/yvWJL03110.png",
"vendors_id": 4,
"total_products": 4,
"childs": [
{
"categories_id": 48,
"categories_name": "Boy Polo Shirts sub-1",
"parent_id": 22,
"image": "images/media/2019/07/yvWJL03110.png",
"icon": "images/media/2019/07/fyprD03510.png",
"vendors_id": 5,
"total_products": 0
},
{
"categories_id": 49,
"categories_name": "Boy Polo Shirts sub-2",
"parent_id": 22,
"image": "images/media/2019/07/yvWJL03110.png",
"icon": "images/media/2019/07/fyprD03510.png",
"vendors_id": 5,
"total_products": 0
}
]
},
{
"categories_id": 23,
"categories_name": "Boy Casual Shirts",
"parent_id": 3,
"image": "images/media/2019/07/yvWJL03110.png",
"icon": "images/media/2019/07/yvWJL03110.png",
"vendors_id": 4,
"total_products": 5
},
{
"categories_id": 24,
"categories_name": "Boy Pants & Jeans",
"parent_id": 3,
"image": "images/media/2019/07/yvWJL03110.png",
"icon": "images/media/2019/07/yvWJL03110.png",
"vendors_id": 4,
"total_products": 4
},
{
"categories_id": 25,
"categories_name": "Boy Shoes",
"parent_id": 3,
"image": "images/media/2019/07/yvWJL03110.png",
"icon": "images/media/2019/07/yvWJL03110.png",
"vendors_id": 4,
"total_products": 3
}
]
},
{
"categories_id": 4,
"categories_name": "Girl's Clothing",
"parent_id": 0,
"image": "images/media/2019/07/yvWJL03110.png",
"icon": "images/media/2019/07/yvWJL03110.png",
"vendors_id": 3,
"total_products": 6,
"childs": [
{
"categories_id": 26,
"categories_name": "Dresses & Rompers",
"parent_id": 4,
"image": "images/media/2019/07/yvWJL03110.png",
"icon": "images/media/2019/07/yvWJL03110.png",
"vendors_id": 4,
"total_products": 3
},
{
"categories_id": 27,
"categories_name": "Shorts & Skirts",
"parent_id": 4,
"image": "images/media/2019/07/yvWJL03110.png",
"icon": "images/media/2019/07/yvWJL03110.png",
"vendors_id": 4,
"total_products": 3
},
{
"categories_id": 28,
"categories_name": "Sweaters",
"parent_id": 4,
"image": "images/media/2019/07/yvWJL03110.png",
"icon": "images/media/2019/07/yvWJL03110.png",
"vendors_id": 4,
"total_products": 0
}
]
}
],
"message": "Returned all categories.",
"categories": 2
}
Я хочу пройти весь внутренний уровень, а также я хочу, чтобы продукт соответствовал той категории, к которой относится category_id