对json_serializable的修改,增加对int,double,num,bool,String
类型自动转换功能,对比.g.dart文件
原来:
Person _$PersonFromJson(Map<String, dynamic> json) {
return Person(
firstName: json['firstName'] as String,
height: json['height'] as double,
age: json['age'] as int,
);
}
如果height
属性不是double
类型,那么json['height'] as double
这段代码会抛出异常,导致后面代码无法继续执行。
现在:
Person _$PersonFromJson(Map<String, dynamic> json) {
return Person(
firstName: JsonSerializableSafety.jsonToString(json['firstName']),
height: JsonSerializableSafety.jsonToDouble(json['height']),
age: JsonSerializableSafety.jsonToInt(json['age']),
);
}
dev_dependencies:
# 删除原来的json_serializable,改成它
json_serializable:
git:
url: [email protected]:zhahao/json_serializable.dart.git
path: json_serializable/
ref: 'json_serializable-v3.5.1_value_safety'
被解析的JsonBean.dart导入import 'package:json_serializable_safety/json_serializable_safety.dart';