2017-02-09 191 views
0

我知道這個問題已經提出了很多,但到目前爲止,我沒有真正找到答案...Android - 如何訪問嵌套的對象?

我想與GSON一起使用Android。我想使用JSON字符串填充Gridview,但我不知道如何訪問嵌套的對象。

JSON文件:

[{'ProductCategories':[ 
{ 
    'name':'Cat1', 'Product Series':[ 
     { 
      'name':'ProdSeries1', 'Description':'Lorem Ipsum Bla Bla','Products':[ 
       { 
        'name':'Product1','key':'value','key':'...' 
       }, 
       { 
        'name':'Product2','key':'value','key':'...' 
       }, 
      ] 
     } 
    ] 
}, 
] 
}] 

我做了4類:ProductsProductSeriesProductCatalogProductCategory

例如:

public class ProductCatalog { 

@SerializedName("ProductCategories") 
@Expose 
private List<ProductCategory> productCategories = null; 

public List<ProductCategory> getProductCategories() { 
    return productCategories; 
} 

public void setProductCategories(List<ProductCategory> productCategories) { 
    this.productCategories = productCategories; 
} 

}

之後,我分析的JSON與GSON:

Gson gson = new Gson(); 
Type type = new TypeToken<List<ProductCatalog>>(){}.getType(); 
List<ProductCatalog> productcatalog = gson.fromJson(JSONstring,type); 

現在我有JSON數據的分析列表,但不知道如何工作的與'Product1'嵌套的對象。我認爲獲得者會有所幫助,但我無法在我的活動中訪問getProductCategories()。我怎樣才能做到這一點?

回答

0

如果您使用GSON意味着這將幫助你

public class MainClazz { 
@SerializedName("ProductCategories") 
@Expose 
private List<ProductCategory> productCategories = null; 
public List<ProductCategory> getProductCategories() { 
return productCategories; 
} 
public void setProductCategories(List<ProductCategory> productCategories) { 
this.productCategories = productCategories; 
} 
} 

public class Product { 

@SerializedName("name") 
@Expose 
private String name; 
@SerializedName("key") 
@Expose 
private String key; 

public String getName() { 
    return name; 
} 

public void setName(String name) { 
    this.name = name; 
} 

public String getKey() { 
    return key; 
} 

public void setKey(String key) { 
    this.key = key; 
} 

} 


public class ProductCategory { 

@SerializedName("name") 
@Expose 
private String name; 
@SerializedName("Product Series") 
@Expose 
private List<ProductSeries> productSeries = null; 

public String getName() { 
return name; 
} 

public void setName(String name) { 
this.name = name; 
} 

public List<ProductSeries> getProductSeries() { 
return productSeries; 
} 

public void setProductSeries(List<ProductSeries> productSeries) { 
this.productSeries = productSeries; 
} 

} 



public class ProductSeries { 

@SerializedName("name") 
@Expose 
private String name; 
@SerializedName("Description") 
@Expose 
private String description; 
@SerializedName("Products") 
@Expose 
private List<Product> products = null; 

public String getName() { 
return name; 
} 

public void setName(String name) { 
this.name = name; 
} 

public String getDescription() { 
return description; 
} 

public void setDescription(String description) { 
this.description = description; 
} 

public List<Product> getProducts() { 
return products; 
} 

public void setProducts(List<Product> products) { 
this.products = products; 
} 

} 
+0

感謝這個答案。但是我的類看起來完全一樣......在'List productcatalog = gson.fromJson(JSONstring,type)之後;'我不能使用getter'productcatalog.getProductCategories()' – Mike

+0

您已經替換了主類('MainClazz ''用'ProductCatalog'命名,仍然沒有得到 –

+0

發佈完整的json –