当一个JSON中有2种不同的数据,需要有不同的用途作为不同的Holder,这个时候需要分开解析

数据中title是一个单独的类型,需要单独显示,解析的过程如下
CategoryProtocol.java
package com.ldw.market.protocol;
import java.util.ArrayList;
import java.util.List;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import com.ldw.market.domain.CategoryInfo;
/*
* 解析分类模块的数据
*/
public class CategoryProtocol extends BaseProtocol<List<CategoryInfo>> {
@Override
public List<CategoryInfo> parseJson(String json) {
List<CategoryInfo> categoryInfos=new ArrayList<CategoryInfo>();
try {
JSONArray array=new JSONArray(json);
for(int i=0;i<array.length();i++){
JSONObject jsonObject = array.getJSONObject(i);
String title=jsonObject.getString("title");
//当前的对象是标题的时候,单独把title添加到集合中
CategoryInfo categoryInfo=new CategoryInfo();
categoryInfo.setTitle(title);
categoryInfo.setIsTitle(true);
categoryInfos.add(categoryInfo);
//对象是其他的数据的时候单独保存
JSONArray jsonArray = jsonObject.getJSONArray("infos");
for(int j=0;j<jsonArray.length();j++){
JSONObject jsonObject2 = jsonArray.getJSONObject(j);
String url1=jsonObject2.getString("url1");
String url2=jsonObject2.getString("url2");
String url3=jsonObject2.getString("url3");
String name1=jsonObject2.getString("name1");
String name2=jsonObject2.getString("name2");
String name3=jsonObject2.getString("name3");
//最后一个参数判断数据是否是title
CategoryInfo categoryInfo2=new CategoryInfo(title, url1, url2, url3, name1, name2, name3,false);
categoryInfos.add(categoryInfo2);
}
}
return categoryInfos;
} catch (JSONException e) {
e.printStackTrace();
return null;
}
}
@Override
public String getKey() {
return "category";
}
}
JSON数据如下:
[
{
"infos": [
{
"name1": "休闲",
"name2": "棋牌",
"name3": "益智",
"url1": "image/category_game_0.jpg",
"url2": "image/category_game_1.jpg",
"url3": "image/category_game_2.jpg"
},
{
"name1": "射击",
"name2": "体育",
"name3": "儿童",
"url1": "image/category_game_3.jpg",
"url2": "image/category_game_4.jpg",
"url3": "image/category_game_5.jpg"
},
{
"name1": "网游",
"name2": "角色",
"name3": "策略",
"url1": "image/category_game_6.jpg",
"url2": "image/category_game_7.jpg",
"url3": "image/category_game_8.jpg"
},
{
"name1": "经营",
"name2": "竞速",
"name3": "",
"url1": "image/category_game_9.jpg",
"url2": "image/category_game_10.jpg",
"url3": ""
}
],
"title": "游戏"
},
{
"infos": [
{
"name1": "浏览器",
"name2": "输入法",
"name3": "健康",
"url1": "image/category_app_0.jpg",
"url2": "image/category_app_1.jpg",
"url3": "image/category_app_2.jpg"
},
{
"name1": "效率",
"name2": "教育",
"name3": "理财",
"url1": "image/category_app_3.jpg",
"url2": "image/category_app_4.jpg",
"url3": "image/category_app_5.jpg"
},
{
"name1": "阅读",
"name2": "个性化",
"name3": "购物",
"url1": "image/category_app_6.jpg",
"url2": "image/category_app_7.jpg",
"url3": "image/category_app_8.jpg"
},
{
"name1": "资讯",
"name2": "生活",
"name3": "工具",
"url1": "image/category_app_9.jpg",
"url2": "image/category_app_10.jpg",
"url3": "image/category_app_11.jpg"
},
{
"name1": "出行",
"name2": "通讯",
"name3": "拍照",
"url1": "image/category_app_12.jpg",
"url2": "image/category_app_13.jpg",
"url3": "image/category_app_14.jpg"
},
{
"name1": "社交",
"name2": "影音",
"name3": "安全",
"url1": "image/category_app_15.jpg",
"url2": "image/category_app_16.jpg",
"url3": "image/category_app_17.jpg"
}
],
"title": "应用"
}
]
1343

被折叠的 条评论
为什么被折叠?



