Json解析的详解
一,用Json解析数据时的步骤:
第一步:先依赖xutils工具类库,在项目的属性中添加,把gson的jar包也变为可依赖的库
第二步:写布局第三步:写bean
第四步:打log检验:
(1)检验其中的一个字符串
WeatherBean bean = gson.fromJson(result, WeatherBean.class);
Log.e("neirong", bean.retData.history.get(0).aqi);
(2)检验bean
processData(responseInfo.result);
Log.e("neirong", responseInfo.result);
第五步:写逻辑进行适配
第六步:不要忘记加网络权限,否则会出现报错retry error, curr request is null
Demo:主要代码展现
public class MainActivity extends Activity {
private String url = "http://192.168.26.130:8080/tianqi.json.txt";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TextView tv = (TextView) findViewById(R.id.tv);
Button bt = (Button) findViewById(R.id.bt);
bt.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
HttpUtils httpUtils = new HttpUtils();
httpUtils.send(HttpMethod.GET, url, null,new RequestCallBack<String>() {
@Override
public void onSuccess(ResponseInfo<String> responseInfo) {
processData(responseInfo.result);
Log.e("neirong", responseInfo.result);
}
@Override
public void onFailure(HttpException error, String msg) {
}
});
}
});
}
private void processData(String result) {
Gson gson = new Gson();
WeatherBean bean = gson.fromJson(result, WeatherBean.class);
Log.e("neirong", bean.retData.history.get(0).aqi);
}
}
二,解析过程中需要的对象及过程:
(1)创建Xutils工具类中的的HttpUtils对象,调用send方法,需要四个参数:
第一个参数method:请求方式
第二个参数url:请求数据的url地址
第三个参数params:请求的参数
第四个参数 callBack:请求回调
(2)还需重写RequestCallBack<String>()的两个方法
onSuccess(ResponseInfo<String> responseInfo)和onFailure(HttpException error, String msg)
在这两个方法中做一些请求成功或失败的处理
(3)在onSuccess方法中进行Json解析数据的操作:
Gson gson = new Gson();
WeatherBean bean = gson.fromJson(result, WeatherBean.class);
Log.e("neirong", bean.retData.history.get(0).aqi)<span style="font-family:SimSun;">;</span>
总结:
检验请求数据是否成功的方法步骤:
(1)请求下来的数据先打一个Log:关于数据的一条内容,如果打印出来的话则说明解析成功,接下来进行第二步
(2)检验Bean是否写对了,Json解析的Bean必须与解析的内容一一对应,只可多不可少,如果将内容打印出来了则说明结果请求成功,即数据解析成功