本次内容需要用到gson开源包
Gson
1、解析(String —> Object)
- 标准解析
//json解析 String —-> Object
Gson gson = new Gson();
//第二个参数指的是要转换成的类型,JavaBean的类型
NewsCenterBean bean = gson.fromJson(json, Class);
2、合成(Object —> String)
3、json的数据类型
- [] 集合、数组
- 单个节点的value为数字:int double long
- 单个节点的value为true、false:boolean
- 如果节点下包含很多节点:对象节点(Object节点)
4、解析Json用到HiJson工具
遇到Array 即定义为List类型
遇到数据定义为int或者long
遇到空、字符串定义为String
由于定义了List< E >必须为里面的E定义一个类型,声明一个对象再继续照着上面方法进行
回归正题
NewsCenterTabController.java
package huaxa.it.zhihuidemo.base.tab;
import com.google.gson.Gson;
import com.lidroid.xutils.HttpUtils;
import com.lidroid.xutils.exception.HttpException;
import com.lidroid.xutils.http.RequestParams;
import com.lidroid.xutils.http.ResponseInfo;
import com.lidroid.xutils.http.callback.RequestCallBack;
import com.lidroid.xutils.http.client.HttpRequest.HttpMethod;
import android.content.Context;
import android.drm.ProcessedData;
import android.graphics.Color;
import android.util.Log;
import android.view.Gravity;
import android.view.View;
import android.widget.TextView;
import huaxa.it.zhihuidemo.base.TabController;
import huaxa.it.zhihuidemo.bean.NewsCenterBean;
import huaxa.it.zhihuidemo.utils.Constans;
/**
*
* @项目名: ZhiHuiDemo
* @包名: huaxa.it.zhihuidemo.base.tab
* @类名: NewsCenterTabController
* @创建者: 黄夏莲
* @创建时间: 2016年10月9日 ,上午7:29:31
*
* @描述: 新闻中心对应的controller
*/
public class NewsCenterTabController extends TabController
{
private TextView text;
public NewsCenterTabController(Context context)
{
super(context);
}
protected View initContentView(Context context)
{
text = new TextView(context);
text.setTextColor(Color.RED);
text.setTextSize(24);
text.setGravity(Gravity.CENTER);
return text;
}
@Override
public void initData()
{
......
@Override
public void onSuccess(ResponseInfo<String> responseInfo)
{
......
// 数据的处理
ProcessData(result);
}
/**
* 数据处理
*
* @param json
*/
private void ProcessData(String json)
{
//1、json解析 String ----> Object
Gson gson = new Gson();
//第二个参数指的是要转换成的类型,JavaBean的类型
NewsCenterBean bean = gson.fromJson(json, NewsCenterBean.class);
String title = bean.data.get(0).children.get(0).title;
//校验一下
Log.i(TAG,"校验"+ title);
//2、将Model设置给View(Model--->View)
}
......
}
}
NewsCenterBean.java
package huaxa.it.zhihuidemo.bean;
import java.util.List;
/**
*
* @项目名: ZhiHuiDemo
* @包名: huaxa.it.zhihuidemo.bean
* @类名: NewsCenterBean
* @创建者: 黄夏莲
* @创建时间: 2016年10月17日 ,下午11:56:15
*
* @描述: 新闻中心页面的数据
*/
public class NewsCenterBean
{
public List<NewsCenterMenuBean> data;
public List<Long> extend;
public int retcode;
public class NewsCenterMenuBean{
public List<NewCenterTabBean> children;
public long id;
public String title;
public int type;
public String url;
public String url1;
public String dayurl;
public String excurl;
public String weekurl;
}
public class NewCenterTabBean{
public long id;
public String title;
public int type;
public String url;
}
}
运行结果:
运行时报错:java.lang.NoClassDefFoundError: com.google.gson.Gson
解决办法:
打钩这里