解析嵌套的JSON数据并将其分配给Android中的Spinners

时间:2016-03-14 16:08:41

标签: java android json

我需要解析嵌套的JSON数据并将其分配给Android Activity中的Spinners。什么是解析此JSON数据的最佳方法。这样我就可以在微调器内显示值并提交该特定选定值的数据ID。

{
   "root":[
      {
         "genderList":[
            {
               "gender_id":"1",
               "gender_name":"Male"
            },
            {
               "gender_id":"2",
               "gender_name":"Female"
            }
         ]
      },
      {
         "SocialCategory":[
            {
               "SOCIAL_CATEGORY_ID":"1",
               "SOCIAL_CATEGORY_NAME":"General"
            },
            {
               "SOCIAL_CATEGORY_ID":"2",
               "SOCIAL_CATEGORY_NAME":"SC"
            },
            {
               "SOCIAL_CATEGORY_ID":"3",
               "SOCIAL_CATEGORY_NAME":"ST"
            },
            {
               "SOCIAL_CATEGORY_ID":"4",
               "SOCIAL_CATEGORY_NAME":"OBC"
            }
         ]
      }
   ]
}

1 个答案:

答案 0 :(得分:0)

最好的方法是使用代表您要显示的数据的自定义类。然后,您需要解析JSON对象并创建实例并将它们添加到数组或列表中。然后,您需要创建两个适配器(每种类型的数据一个) - 最好的方法是将BaseAdapter扩展为更灵活的方法。将适配器分配给微调器后,您可以从所选位置获取整个对象。在同一时间,您只显示需要的内容 - 适配器定义视图。

此代码未经过测试,但您将了解如何在Android中解析JSON。

    JSONObject responseJson = new JSONObject(response);
    JSONArray rootArray = responseJson.getJSONArray("root");

    JSONObject genderListWrapperJson = rootArray.getJSONObject(0);
    JSONArray genderListJsonArray = genderListWrapperJson.getJSONArray("genderList");

    for (int i = 0; i < genderListJsonArray.length(); i++) {
        JSONObject genderJson = genderListJsonArray.getJSONObject(i);
        String genderId = genderJson.getString("gender_id");
        String genderName = genderJson.getString("gender_name");
        // TODO: instantiate an object of custom type gender
    }

    JSONObject socialCategoryWrapperJson = rootArray.getJSONObject(1);
    JSONArray socialCategoryJsonArray = socialCategoryWrapperJson.getJSONArray("SocialCategory");

    for (int i = 0; i < socialCategoryJsonArray.length(); i++) {
        JSONObject socialCategoryJson = socialCategoryJsonArray.getJSONObject(i);
        String categoryId = socialCategoryJson.getString("SOCIAL_CATEGORY_ID");
        String categoryName = socialCategoryJson.getString("SOCIAL_CATEGORY_NAME");
        // TODO: instantiate an object of custom social category
    }

&#34;响应&#34;是你的JSON文本。