如题所述
通常我们会将请求结果封装成一个BaseResponse,比如这样
但是遇到开发不规范的后台,如果object为空他会返回给你""或者"null"这样一个空字符串,这时候我们用object类型类接收就会抛一个java.lang.IllegalStateException: Expected BEGIN_OBJECT but was STRING 的异常
那么怎么动态的处理这种问题呢
接下来我们来测试一下这个东西起不起作用呢
User类
User{name='Coder', friends=User{name='庄长鹏', friends=null, relation='好朋友', family=null}, relation='自己', family=[User{name='李克亮', friends=null, relation='爸爸', family=null}]}
执行结果为
User{name='Coder', friends=null, relation='自己', family=[User{name='李克亮', friends=null, relation='爸爸', family=null}]}
嗯 friends虽然类型不匹配,但是并不影响其他字段的解析
执行的结果为
User{name='null', friends=User{name='庄长鹏', friends=null, relation='好朋友', family=null}, relation='自己', family=[User{name='李克亮', friends=null, relation='爸爸', family=null}]}
嗯 json字符串中的name字段虽然变成了{}对象,但是并不影响其他字段的解析
回头我们来看看
GsonTypeAdapterFactory是怎么处理的呢