外观
JSON 解析为什么容易线上崩溃?
标准回答
服务端可能返回缺字段、显式 null、类型变化或非预期枚举值;客户端模型如果把这些情况当作不可能,就会在解析或使用数据时失败。应在传输模型与业务模型之间做校验和容错转换。
机制解释
Kotlin 的非空声明不是对外部 JSON 的万能验证器,具体表现还取决于序列化库与配置。大 JSON 解析、复杂映射或数据库写入都可能耗时,不能因为网络使用异步接口就默认后处理对主线程安全。
延伸追问
接口加了新字段就一定不兼容吗?通常可通过忽略未知字段等策略兼容;删字段、改类型、改变业务含义更危险。还要在开启混淆的 release 包验证反射模型、泛型信息和必要保留规则。
内容来源
- Android 智能硬件 SDK 技术 Wiki · 原条目
Q37