①用xUtils联网获得json数据后,放到HiJson工具中,点击格式化JSON字符串。
得到上图的格式。
首先写bean,按层一层一层的写,不会乱:
根据右侧的key-value可以看出,该json包括两个数组和一个整型的数字,定义时字段名要与key值一样:
public class NewsCenterCategory { public List data; public List extend; public int retcode; }
由于数组里面放的是对象,所以定义新的类,并且data的数组中存放的就是该类的对象:
public class NewsCenterCategory { public List<CenterCategory> data; public List extend; public int retcode; public static class CenterCategory{ } }③然后,沿着该类往下看,点击[0],得到下图:
</pre><pre name="code" class="java">public class NewsCenterCategory { public List<CenterCategory> data; public List extend; public int retcode; public static class CenterCategory{ public List children; public int id; public String title; public int type; } }
public class NewsCenterCategory { public List<CenterCategory> data; public List extend; public int retcode; public static class CenterCategory{ public List children; public int id; public String title; public int type; public String url; public String url1; public String dayurl; public String excurl; public String weekurl; } }
得知该数组为int型数组:
public class NewsCenterCategory { public List<CenterCategory> data; public List<Integer> extend; public int retcode; public static class CenterCategory{ public List children; public int id; public String title; public int type; public String url; public String url1; public String dayurl; public String excurl; public String weekurl; } }
该数组里面存的也是对象,定义新的类,后面的步骤如③④,最后得到bean:
public class NewsCenterCategory { public List<CenterCategory> data; public List<Integer> extend; public int retcode; public static class CenterCategory{ public List<CenterCategoryItem> children; public int id; public String title; public int type; public String url; public String url1; public String dayurl; public String excurl; public String weekurl; } public static class CenterCategoryItem{ public int id; public String titel; public int type; public String url; } }
@Override public void onSuccess(ResponseInfo<String> responseInfo) { LogUtils.i(responseInfo.result); Gson gson = new Gson(); NewsCenterCategory newsCenterCategory = gson.fromJson(responseInfo.result, NewsCenterCategory.class); }
由于需要对json解析的地方很多,所以我们可以把Gson解析json写成一个工具类:
public class GsonUtils { public static <T>T jsonToBean(String jsonResult,Class<T> clazz){ Gson gson = new Gson(); T t = gson.fromJson(jsonResult, clazz); return t; } }
@Override public void onSuccess(ResponseInfo<String> responseInfo) { LogUtils.i(responseInfo.result); //Gson gson = new Gson(); //NewsCenterCategory newsCenterCategory = gson.fromJson(responseInfo.result, NewsCenterCategory.class); NewsCenterCategory newsCenterCategory = GsonUtils.jsonToBean(responseInfo.result, NewsCenterCategory.class); }