Flutter类fromJSON初始化器中Double值空值处理的简洁写法
Flutter中fromJSON里Double类型空值的优雅处理
在Flutter的fromJSON初始化器中,要避免对null调用toDouble(),同时实现空值判断后赋值,有以下几种简洁写法替代原有的if判断:
1. 最简空安全写法
myValue = json['myValue']?.toDouble();
- 原理:利用空安全条件访问运算符
?.,只有当json['myValue']不为null时,才会执行后面的toDouble()方法;如果值不存在(为null),则直接返回null并赋值给myValue,完全符合原代码的逻辑。
2. 带默认值的写法(可选)
如果需要在值不存在时给myValue设置默认值(比如0.0),可以结合空合并运算符??:
myValue = json['myValue']?.toDouble() ?? 0.0;
3. 更严谨的类型约束写法
如果需要明确约束json['myValue']的类型为数字(int或double),可以加上类型转换:
myValue = (json['myValue'] as num?)?.toDouble();
这种写法能避免因后端返回非数字类型导致的类型转换异常,安全性更高。
为什么原写法无效?
原代码myValue = json['myValue'].toDouble() ?? null;的问题在于:会先执行json['myValue'].toDouble(),如果json['myValue']是null,此时调用toDouble()会直接抛出NoSuchMethodError,空合并运算符??根本没有执行的机会。
内容的提问来源于stack exchange,提问作者StripyTiger
相关产品推荐
相关产品推荐

