一、前言
现在大多数接口返回的数据都是json格式,在面向对象的开发过程中,基本上都需要转换为Model模型,方便在开发中使用。在Android开发中json字符串转Model对象,可以使用Gson、FastJson等,但在Flutter中确没有这么方便。在Flutter中,提供了dart.convert以及json.dart来解析json字符串,但转换后Map对象,要转换为Model对象还需要进一步处理。
二、JSON转Modle手动转换
2.1 定义Model对象以及转换方法
class Photo {
final int albumId;
final String title;
Photo({required this.albumId, required this.title});
factory Photo.fromJson(Map<String, dynamic> json) {
return Photo(
albumId: json['albumId'] as int, title: json['title'] as String);
}
Map<String, dynamic> toJson() {
return {'albumId': albumId, 'title': title};
}
@override
String toString() {
return 'Photo{albumId: $albumId, title: $title}';
}
}
2.2 测试代码
void main() {
var jsonStr = "{\"albumId\": 10001, \"title\": \"this is photo title\"}";
//使用框架自带json解析工具
var jsonMap = jsonDecode(jsonStr);
var photo = Photo.fromJson(jsonMap);
print(photo.toString());
}
手动将Json转换为Model对象略显麻烦,对象属性较少的情况还是能够接受的。