android 项目学习随笔五(JSON解析)
2016-10-26 13:37
495 查看
1、利用Xutils获取网络数据
2、利用gson解析JSON https://github.com/google/gson
创建自定义类(解析JSON返回)
根据JSON的数据结构创建类
解析JSON
/** * 从服务器获取数据 需要权限: <uses-permission * android:name="android.permission.INTERNET"/> */ private void getDataFromServer() { HttpUtils utils = new HttpUtils(); utils.send(HttpMethod.GET, Constants.CATEGORIES_URL, new RequestCallBack<String>() { @Override public void onSuccess(ResponseInfo<String> responseInfo) { // 请求成功 String result = responseInfo.result;// 获取json字符串 // System.out.println("result:" + result); processResult(result); // 写缓存 CacheUtils.setCache(Constants.CATEGORIES_URL, result, mActivity); } @Override public void onFailure(HttpException error, String msg) { // 请求失败 error.printStackTrace(); Toast.makeText(mActivity, msg, Toast.LENGTH_SHORT) .show(); } }); }
2、利用gson解析JSON https://github.com/google/gson
创建自定义类(解析JSON返回)
根据JSON的数据结构创建类
import java.util.ArrayList; /** * 新闻中心分类数据 * * gson对象封装原则: * 遇到{}就是一个对象 * 遇到[]就是一个Arraylist * 对象中所有属性命名必须和服务器返回字段完全一致 * */ public class NewsMenuData { public int retcode; public ArrayList<String> extend; public ArrayList<NewsData> data; public class NewsData { public String id; public String title; public int type; public ArrayList<NewsTabData> children; @Override public String toString() { return "NewsData [title=" + title + ", children=" + children + "]"; } } // 页签信息封装 public class NewsTabData { public String id; public String title; public String url; public int type; @Override public String toString() { return "NewsTabData [title=" + title + "]"; } } @Override public String toString() { return "NewsMenuData [data=" + data + "]"; } }
解析JSON
/** * 解析json数据 * * @param result */ protected void processResult(String result) { // gson->json Gson gson = new Gson(); mNewsMenuData = gson.fromJson(result, NewsMenuData.class); System.out.println("解析结果:" + mNewsMenuData); // 获取侧边栏对象 MainActivity mainUI = (MainActivity) mActivity; LeftMenuFragment leftMenuFragment = mainUI.getLeftMenuFragment(); // 将网络数据设置给侧边栏 leftMenuFragment.setData(mNewsMenuData.data); // 初始化4个菜单详情页 mMenuDetailPagers = new ArrayList<BaseMenuDetailPager>(); mMenuDetailPagers.add(new NewsMenuDetailPager(mActivity, mNewsMenuData.data.get(0).children)); mMenuDetailPagers.add(new TopicMenuDetailPager(mActivity)); mMenuDetailPagers.add(new PhotosMenuDetailPager(mActivity)); mMenuDetailPagers.add(new InteractMenuDetailPager(mActivity)); // 菜单详情页-新闻作为初始页面 setCurrentMenuDetailPager(0); }
相关文章推荐
- android 项目学习随笔五(JSON解析)
- 【Android学习】JSON与XML综合六种解析方式-综合案例(web项目源码+android源码+jar包)
- Android学习之JSON数据解析
- Android学习之解析JSON
- Android学习系列(20)--App数据格式之解析Json
- 【Android开发经验】超好用的json解析工具——Gson项目使用详解
- android项目文件简介 及JSON文件解析
- android项目文件简介 及JSON文件解析
- Android学习(二):解析JSON,GSON,FASTJSON;JDBC编程
- android学习二十三(解析json格式数据)
- Android项目--Json解析
- android菜鸟学习笔记25----与服务器端交互(二)解析服务端返回的json数据及使用一个开源组件请求服务端数据
- android学习——由于BOM头导致的Json解析出错
- Android学习之解析JSON
- android 学习之json数据的解析与创建
- Android学习之JSON数据解析
- Android json解析有关内容学习笔记
- Android开源地图项目 BigPlanetTracks 学习随笔
- Android学习系列(20)--App数据格式之解析Json
- Android学习--封装成json数据和解析json数据