Closed shenhuxi92 closed 1 year ago
你需要更了解Kotlin的空可选类型, 在文档自定义转换器 开始就有提到转换器里面返回null场景
解决方法, 修改代码
val r = Post<Data?>().await()
你说返回一个空的对象, 转换器怎么new空对象? 更何况data class
是不允许空构造函数的
别说返回null, 你返回Drawable/Bitmap任何对象都可以, 但是请自己在转换器里面处理好
转换器里面发生任何错误都算ConvertException
除CancelExcetion
和NetException
及其子类
if (!json.getString("data").equals("null")) {
json.getString("data").parseBody<R>(kType)
} else {
// 处理空data字符解析
bodyString.parseBody<R>(kType)
}
问题描述
当前我有如下 GSONConcert ` override fun onConvert(succeed: Type, response: Response): R? {
例如有如下 JSON 字符串,
{ "message": "成功", "code": "000", "data": null }
data 的值有可能为 null ,当 data 为 null 时我返回了一个 null 对象,转换器直接抛出了 com.drake.net.exception.ConvertException 异常。 按照我的理解,我在 data 为 null 时直接返回一个 null ,并没有通过 parseBody 方法进行格式转换,为什么还会触发 ConvertException 异常期望行为
当返回 null 时,不会触发 ConvertException 异常,直接返回一个 空对象即可
如何复现
截图
异常堆栈信息或者手机截图/视频(拖拽到输入框即可上传)
版本