/**
!!!!非常重要、需要练习2遍!!!!
需求:
下载给大家的服务端的categories.json 文件到本地,并把json字符串解析成相应的对象
要求:
再次联系HttpUitls的使用
学会使用Gson类库和Hijson辅助软件
定义json所对应的类的时候的步骤:
1 拿到一个json字符串
2 复制到hijson最左侧的栏目中 ,点击格式化json字符串
3 定义类(名字根据内容起), 看中间的栏目 观察属性的数量和名称,定义多个成员变量
4 观察属性的值,定义成员变量的类型, 如果没有双引号就是boolean 或 数字 ,如果是[] 就是List,如果是 {} 就是对象
5 从外层向内层推进
注意:细心,耐心
1 一定注意json的属性名和成员变量一致(拼写 和 大小写)
2 如果不想一致或不能一致(关键词冲突、命名冲突) 在 成员变量上添加注解 @SerializedName 指定json中的属性名为 注解的属性
3 必须要保证类上面有无参的构造方法
*/
示例
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void parseJson(View view) {
HttpUtils httpUtils = new HttpUtils();
//此处url是我本地的服务器地址 (模拟加载服务器地址)
httpUtils.send(HttpMethod.GET, "http://10.0.2.2:8080/czxw/categories.json", callBack);
}
private RequestCallBack<String> callBack = new RequestCallBack<String>() {
@Override
public void onSuccess(ResponseInfo<String> responseInfo) {
//加载成功返回的字符串json
String json = responseInfo.result;
// FastJson的使用
// parseObject 是把 json 变为对象的
Bean bean = JSON.parseObject(json, Bean.class);
Log.d("onSuccess", ""+bean);
// toJSONString 是 把 对象 变为json 的
String json2 = JSON.toJSONString(bean);
/*
// Gson的使用:
// 1. 创建Gson对象
Gson gson = new Gson();
// 2. 调用 它 解析json
// fromJson 是把 json 变为对象的
Bean bean = gson.fromJson(json, Bean.class);
Log.d("onSuccess", ""+bean);
// toJson 是 把 对象 变为json 的
String json2 = gson.toJson(bean);
*/
}
@Override
public void onFailure(HttpException error, String msg) {
}
};
}
//你会发现2.6版本的xUtils是因为android取消了 httpClient 而出错 那么 你需要在gradle文件中添加上这么一句话:
useLibrary 'org.apache.http.legacy'
没时间解释了 快上车
//值得一提的是Gson提供了如果Bean的某一个属性是java关键字,可以添加一个serilizedName注解 :@SerializedName("extends") private String extend;如此一来解决问题
如果有帮到你 , 小小意思!