4.json解析
格式
{"name":"zhangsan", "age":18, "books":[{"name":"金瓶","price":10}, {"name":"红楼梦","price":20}]}
[{"id":"5","version":"5.5","name":"Angry Birds"},{"id":"6","version":"7.0","name":"Clash of Clans"},{"id":"7","version":"3.5","name":"Hey Day"}]
private void parseJSONWithJSONObject(String jsonData) {try {JSONArray jsonArray = new JSONArray(jsonData);for (int i = 0; i < jsonArray.length(); i++) {JSONObject jsonObject = jsonArray.getJSONObject(i);String id = jsonObject.getString("id");String name = jsonObject.getString("name");String version = jsonObject.getString("version");Log.d("MainActivity", "id is " + id);Log.d("MainActivity", "name is " + name);Log.d("MainActivity", "version is " + version);}} catch (Exception e) {e.printStackTrace();}}
google + json
谷歌提供的开源的解析json的框架
Gson gson = new Gson();
NewsData data = gson.fromJson(result, NewsData.class);

public int retcode;public PhotosInfo data;public class PhotosInfo {public String title;public ArrayList<PhotoInfo> news;}
/*** 网络分类信息的封装** 字段名字必须和服务器返回的字段名一致, 方便gson解析*/public class NewsData {public int retcode;public ArrayList<NewsMenuData> data;// 侧边栏数据对象public class NewsMenuData {public String id;public String title;public int type;public String url;public ArrayList<NewsTabData> children;@Overridepublic String toString() {return "NewsMenuData [title=" + title + ", children=" + children+ "]";}}// 新闻页面下11个子页签的数据对象public class NewsTabData {public String id;public String title;public int type;public String url;@Overridepublic String toString() {return "NewsTabData [title=" + title + "]";}}@Overridepublic String toString() {return "NewsData [data=" + data + "]";}}
public class GlobalContants {public static final String SERVER_URL = "http://10.0.2.2:8080/zhbj";// 获取分类信息的接口public static final String CATEGORIES_URL = SERVER_URL + "/categories.json";}
public class NewsCenterPager extends BasePager {- //只要需要往一个容器添加很多页面,就需要一个arraylist
private ArrayList<BaseMenuDetailPager> mPagers;// 4个菜单详情页的集合private NewsData mNewsData;public NewsCenterPager(Activity activity) {super(activity);}@Overridepublic void initData() {System.out.println("初始化新闻中心数据....");tvTitle.setText("新闻");setSlidingMenuEnable(true);// 打开侧边栏getDataFromServer();}/*** 从服务器获取数据*/private void getDataFromServer() {HttpUtils utils = new HttpUtils();// 使用xutils发送请求utils.send(HttpMethod.GET, GlobalContants.CATEGORIES_URL,new RequestCallBack<String>() {// 访问成功@Overridepublic void onSuccess(ResponseInfo responseInfo) {String result = (String) responseInfo.result;System.out.println("返回结果:" + result);parseData(result);}// 访问失败@Overridepublic void onFailure(HttpException error, String msg) {Toast.makeText(mActivity, msg, Toast.LENGTH_SHORT).show();error.printStackTrace();}});}/*** 解析网络数据** @param result*/protected void parseData(String result) {Gson gson = new Gson();mNewsData = gson.fromJson(result, NewsData.class);System.out.println("解析结果:" + mNewsData);// 刷新测边栏的数据MainActivity mainUi = (MainActivity) mActivity;LeftMenuFragment leftMenuFragment = mainUi.getLeftMenuFragment();//获取侧边栏对象leftMenuFragment.setMenuData(mNewsData);//侧边的方法,使用侧边栏展示数据// 准备4个菜单详情页mPagers = new ArrayList<BaseMenuDetailPager>();mPagers.add(new NewsMenuDetailPager(mActivity,mNewsData.data.get(0).children));mPagers.add(new TopicMenuDetailPager(mActivity));mPagers.add(new PhotoMenuDetailPager(mActivity));mPagers.add(new InteractMenuDetailPager(mActivity));setCurrentMenuDetailPager(0);// 设置菜单详情页-新闻为默认当前页}/*** 设置当前菜单详情页*/public void setCurrentMenuDetailPager(int position) {BaseMenuDetailPager pager = mPagers.get(position);// 获取当前要显示的菜单详情页flContent.removeAllViews();// 清除之前的布局flContent.addView(pager.mRootView);// 将菜单详情页的布局设置给帧布局// 设置当前页的标题NewsMenuData menuData = mNewsData.data.get(position);//获取mNewsData下数据的第几个页面tvTitle.setText(menuData.title);pager.initData();// 初始化当前页面的数据}}
public class NewsMenuDetailPager extends BaseMenuDetailPager{private ArrayList<NewsTabData> mNewsTabData;// 页签网络数据public NewsMenuDetailPager(Activity activity,ArrayList<NewsTabData> children) {super(activity);mNewsTabData = children;}@Overridepublic View initViews() {return null;}}
public abstract class BaseMenuDetailPager {public Activity mActivity;public View mRootView;// 根布局对象public BaseMenuDetailPager(Activity activity) {mActivity = activity;mRootView = initViews();}/*** 初始化界面*/public abstract View initViews();/*** 初始化数据*/public void initData() {}}
4.json解析的更多相关文章
- Android okHttp网络请求之Json解析
前言: 前面两篇文章介绍了基于okHttp的post.get请求,以及文件的上传下载,今天主要介绍一下如何和Json解析一起使用?如何才能提高开发效率? okHttp相关文章地址: Android o ...
- Json解析工具的选择
前言 前段时间@寒江不钓同学针对国内Top500和Google Play Top200 Android应用做了全面的分析(具体分析报告见文末的参考资料),其中有涉及到对主流应用使用json框架Gson ...
- iOS json 解析遇到error: Error Domain=NSCocoaErrorDomain Code=3840 "The operation couldn’t be completed.
Error Domain=NSCocoaErrorDomain Code=3840 "The operation couldn’t be completed. (Cocoa error 38 ...
- Android之JSON解析
做个Android网络编程的同学一定对于JSON解析一点都不陌生,因为现在我们通过手机向服务器请求资源,服务器给我们返回的数据资源一般都是以JSON格式返回,当然还有一些通过XML格式返回,相对JSO ...
- Android总结之json解析(FastJson Gson 对比)
前言: 最近为了统一项目中使用的框架,发现项目中用到了两种json解析框架,他们就是当今非常主流的json解析框架:google的Gson 和阿里巴巴的FastJson,为了废除其中一个所以来个性能和 ...
- JSON解析和XML解析对比
JSON解析和XML解析是较为普遍的两种解析方式,其中JSON解析的市场分额更大.本文系统的分析两种解析方式的区别,为更好地处理数据作准备.由于目前阶段主要是做移动开发,所以本文所描述的JSON解析和 ...
- iOS json解析的几种方法 NSJSONSerialization,JSONKit,SBJson ,TouchJson
相关的第三方类库大家可以去github上下载 1.NSJSONSerialization 具体代码如下 : - (void)viewDidLoad { [super viewDidLoad]; NSD ...
- Json解析工具Jackson(使用注解)
原文http://blog.csdn.net/nomousewch/article/details/8955796 接上一篇文章Json解析工具Jackson(简单应用),jackson在实际应用中给 ...
- Json解析工具Jackson(简单应用)
原文http://blog.csdn.net/nomousewch/article/details/8955796 概述 Jackson库(http://jackson.codehaus.org),是 ...
- Tomjson - 一个"短小精悍"的 json 解析库
Tomjson,一个"短小精悍"的 json 解析库,tomjson使用Java语言编写,主要作用是把Java对象(JavaBean)序列化为json格式字符串,将json格式字符 ...
随机推荐
- linux 强制删除yum安装的php7.2
由于支付宝SDK只支持php7.1,因为需要删除之前安装的7.2版,进行降级.通过yum remove不能完全删除php,必须通过rpm方式卸载.由于php安装模块间有依赖,因此需要按顺序进行卸载.如 ...
- Ado.net之连接数据库
一.Ado.net的核心 Ado.net的核心为两组重要的类,一个负责处理软件内部的实际数据(DataSet),另一个负责与外部数据系统通信(DataProvider) DataSet:包含一个或多个 ...
- Codeforces Round #437 E. Buy Low Sell High
题意:买卖股票,给你n个数,你可以选择买进或者卖出或者什么都不做,问你最后获得的最大收益是多少. Examples Input 910 5 4 7 9 12 6 2 10 Output 20 Inpu ...
- lvs+nginx负载均衡
1 学习目标 掌握什么是负载均衡及负载均衡的作用和意义. 了解lvs负载均衡的三种模式. 了解lvs-DR负载均衡部署方法. 掌握nginx实现负载均衡的方法. 掌握lvs+nginx负载 ...
- day41 mysql详细操作
复习 create table 表名( id int primary key auto_increment, 字段名 数据类型[(宽度) 约束] )engine=innodb charset=utf8 ...
- 转:JMeter监控内存及CPU ——plugin插件监控被测系统资源方法
JMeter监控内存及CPU ——plugin插件监控被测系统资源方法 jmeter中也可以监控服务器的CPU和内存使用情况,但是需要安装一些插件还需要在被监测服务器上开启服务. 1.需要的插件准备 ...
- short s1 = 1; s1 = s1 + 1;和 short s1 = 1; s1 += 1;的问题,终于弄懂了
对于short s1 = 1; s1 = s1 + 1; 由于s1+1运算时会自动提升表达式的类型,所以结果是int型,再赋值给short类型s1时,编译器将报告需要强制转换类型的错误. 对于shor ...
- 199. Binary Tree Right Side View 从右侧看的节点数
[抄题]: Given a binary tree, imagine yourself standing on the right side of it, return the values of t ...
- Python开发——数据类型【集合】
集合的定义 由一个或多个确定的元素所构成的整体 可变集合 s=set('hello') print(s) # {'e', 'l', 'o', 'h'} s=set(['alex','alex','Lu ...
- python 之字符编码
一 了解字符编码的储备知识 python解释器和文件本编辑的异同 相同点:python解释器是解释执行文件内容的,因而python解释器具备读py文件的功能,这一点与文本编辑器一样 不 ...