2017-02-09 2 views
0

Ich weiß, dass diese Frage ziemlich oft aufgeworfen wurde, aber bis jetzt fand ich keine Antwort ...Android - Wie kann ich auf verschachtelte Objekte zugreifen?

Ich versuche Android mit GSON zu verwenden. Ich möchte eine JSON-Zeichenfolge verwenden, um eine Gridview zu füllen, aber ich weiß nicht, wie auf die verschachtelten Objekte zuzugreifen.

Die JSON-Datei:

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

Ich habe 4 Klassen: Products, ProductSeries, ProductCatalog und ProductCategory.

Beispiel:

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; 
} 

}

Danach habe ich die JSON mit Gson analysiert:

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

Jetzt habe ich eine analysierte Liste der Daten JSON, aber nicht wissen, wie zu arbeiten mit den verschachtelten Objekten wie 'Produkt1'. Ich dachte, die Getter würden helfen, aber ich kann nicht auf getProductCategories() in meiner Tätigkeit zugreifen. Wie kann ich das machen?

Antwort

0

Wenn Ihr mit Gson bedeutet Dies wird Ihnen helfen

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

Dank für diese Antwort. Aber meine Klassen sehen genau gleich aus ... Nach 'List productcatalog = gson.fromJson (JSONstring, type);' Ich kann den Getter 'productcatalog.getProductCategories()' – Mike

+0

nicht verwenden Sie haben die Hauptklasse ('MainClazz ') Name mit' ProductCatalog' und immer noch nicht erhalten –

+0

posten Sie Ihre volle JSON –

Verwandte Themen