Как правильно заметил @ Dante617, ваше представление JSON неверно. Правильное представление
{
"categories": [
{"descrName":"Descriptive Cat Name 1", "label": "cat1Label"},
{"descrName":"Descriptive Cat Name 2", "label": "cat2Label"}
]
}
Теперь это можно представить как карту заголовка «категорий» и списка объектов категории . Таким образом, объект Java, который его отображает, будет Map<String, List<Category>>
Если вы как-то правильно переформатируете строку, как показано выше. Вот как бы вы разобрались.
String categories = "{\"Categories\":[{\"descrName\":\"Descriptive Cat 1 Name\",\"label\":\"cat1label\"}, {\"descrName\":\"Descriptive Cat 2 Name\",\"label\":\"cat2label\"}]}";
Gson gson = new Gson();
Type type = new TypeToken<Map<String, List<Category>>>() {}.getType();
Map<String, List<Category>> l = gson.fromJson(categories, type);
System.out.println("l: " + l);
Если ваш Java-объект выглядит так
public class Category {
private String descrName;
private String label;
//no need of getters and setters. Reflection, baby! :)
@Override
public String toString() {
return "<Name:"+descrName+", label:"+label+">";
}
}
Вывод будет отображаться так
l: {Categories=[<Name:Descriptive Cat 1 Name, label:cat1label>, <Name:Descriptive Cat 2 Name, label:cat2label>]}