按类别进行的Android json解析
我有一个Json数组,如下所示:按类别进行的Android json解析,android,json,android-layout,android-intent,android-listview,Android,Json,Android Layout,Android Intent,Android Listview,我有一个Json数组,如下所示: [{"item":{"category Name":"T-e-PBS","SubCategory Name":"T-e-PBS"}}, {"item":{"category Name":"T-e-PBS","SubCategory Name":"Animals"}}, {"item":{"category Name":"T-e-PBS","SubCategory Name":"Birds"}}, {"item":{"category Name":"T-e-PBS
[{"item":{"category Name":"T-e-PBS","SubCategory Name":"T-e-PBS"}},
{"item":{"category Name":"T-e-PBS","SubCategory Name":"Animals"}},
{"item":{"category Name":"T-e-PBS","SubCategory Name":"Birds"}},
{"item":{"category Name":"T-e-PBS","SubCategory Name":"Vegetables"}},
{"item":{"category Name":"T-e-PBS","SubCategory Name":"Colors"}},
{"item":{"category Name":"Rhymes","SubCategory Name":"Rhymes"}},
{"item":{"category Name":"Rhymes","SubCategory Name":"Animated Rhymes"}},
{"item":{"category Name":"Rhymes","SubCategory Name":"Cartoon Rhymes"}},
{"item":{"category Name":"Rhymes","SubCategory Name":"Prayers"}}]
我已经尝试过了,但不知道如何获取类别信息,因为我在类别下有很多子类别:
我想解析这个JSON字符串,并根据类别填充数据
如果我点击T-e-PBS按钮,我应该能够在gridview中获得所有子类别,如gridview中的AnimalsImage、BirdsImage等
如果我点击韵类,我应该能够在网格视图中获得所有子类
有人能帮忙吗
我试过:
JSONArray ja = new JSONArray(json);
int size = ja.length();
Log.d("tag","No of Elements " + ja.length());
for (int i = 0; i < size; i++) {
String str = ja.getString(i);
}
JSONArray ja=新的JSONArray(json);
int size=ja.length();
Log.d(“标记”,“元素数量”+ja.length());
对于(int i=0;i
在for循环中,使用
JSONObject c = ja.getJSONObject(i);
然后使用
String str = c.getString("category Name");
JSON对象是使用
{
表示的。因此,根据您的JSON结构,解析它并检索所需的项。您可以使用HashMap存储单独的类别列表,并且您可以轻松地获得所需的类别列表,如T-e-PBS、Rymes等。
// Which hold the category basis of category Type
HashMap<String, List<String>> category = new HashMap<String, List<String>>();
List<String> cat_name = new ArrayList<String>();
List<String> subcat_name = new ArrayList<String>();
try {
JSONObject script = new JSONObject("YOUR RESPONSE STRING");
JSONArray listOfCategory = script.getJSONArray("YOUR_ARRAY");
for (int j = 0; j < listOfCategory.length(); j++) {
JSONObject item = listOfCategory.getJSONObject(j).getJSONObject("item");
String cat = item.getString("category Name");
if (cat.equalsIgnoreCase("T-e-PBS")) {
cat_name.add(item.getString("SubCategory Name"));
} else if (cat.equalsIgnoreCase("Rhymes")) {
subcat_name.add(item.getString("SubCategory Name"));
}
}
category.put("T-e-PBS", cat_name);
category.put("Rhymes", subcat_name);
// To get the according to Category Name
List<String> retrieveCatList1 = category.get("T-e-PBS");//Key is T-e-PBS
List<String> retrieveCatList2 = category.get("Rhymes");//Key is Rhyme
} catch (Exception e) {
}
//其中包含类别类型的类别基础
HashMap类别=新建HashMap();
List cat_name=new ArrayList();
List subcat_name=new ArrayList();
试一试{
JSONObject脚本=新建JSONObject(“您的响应字符串”);
JSONArray listOfCategory=script.getJSONArray(“您的数组”);
对于(int j=0;j
您可以使用ArrayLists的HashMap
HashMap<String, ArrayList<String>> map = new HashMap<String, ArrayList<String>>();
try {
JSONArray array = new JSONArray(str);
// Where str is your response in String form
for (int i=0; i<array.length(); i++){
String category = item.getString("category Name");
String subcategory = item.getString("SubCategory Name");
ArrayList<String> categoryFromMap = map.get("category");
if (categoryFromMap == null){
// Not initiated
categoryFromMap = new ArrayList<String>();
}
categoryFromMap.put(subcategory);
map.put(category, categoryFromMap);
}
} catch (JSONException ex){
ex.printStackTrace();
}
// Accessing your data
for (String key : map.keySet()){
// key contains your category names
ArrayList<String> subcategories = map.get(key);
Log.d("CATEGORY", key);
for (String subcat : subcategories){
Log.d("SUBCATEGORY", subcat);
}
}
// Getting a single category
ArrayList<String> rhymes = map.get("Rhymes");
如果你有两个以上的子类别怎么办?你会用if子句将它们添加到代码中吗?@santirivera92我给出了一种解决问题的方法。我们可以用多种方式来实现。我们可以动态存储多个类别。
CATEGORY T-e-PBS
SUBCATEGORY T-e-PBS
SUBCATEGORY Animals
SUBCATEGORY Birds
SUBCATEGORY Vegetables
SUBCATEGORY Colors
CATEGORY Rhymes
SUBCATEGORY Rhymes
SUBCATEGORY Animated Rhymes
SUBCATEGORY Cartoon Rhymes
SUBCATEGORY Prayers