Android 应对服务器返回不规范行为技巧
我们在编写项目的时候如果遇到了能力还不错的后台小伙伴那自然是顺风顺水,只需要专注自己的业务逻辑与框架搭建。 但如果不幸的遇到了能力不足,还无可奈何的小伙伴时,会让你瞬间奔溃
比方说当规定好的int结果是null返回给你的时候,之前的gson会报错,我写文章的时候用的是2.7 已经修复了这个问题。 但如果说,数据结构很长,比方说这种
addressBean.getProvince().getCity().getAreaBean().getDepartment().getDepartmentName();
当服务器某个对象不返回给你怎么办,难道要一层层做非空判断?
- 两种处理方法
1.调用gson 的registerTypeAdapter方法,定义符合自己规范的格式
2.在Android Studio 配置自定义的模板,自动加入非空判断
方法1:
public static class StringAdapter extends TypeAdapter<Object> {
@Override
public Object read(JsonReader in) throws IOException {
JsonToken token = in.peek();
switch (token) {
case NULL:
in.nextNull();
return "不准为空";
case STRING:
in.nextString();
return "自定义字符串";
case BOOLEAN:
in.nextBoolean();
return true;
case NUMBER:
/**
* 改写数字的处理逻辑,将数字值分为整型与浮点型。
*/
double dbNum = in.nextDouble();
// 数字超过long的最大值,返回浮点类型
if (dbNum > Long.MAX_VALUE) {
return dbNum;
}
// 判断数字是否为整数值
lon