我需要解析嵌套的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"
}
]
}
]
}
答案 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文本。