在开发过程中,后台接口往往会返回一些结构化数据(JSON),为了方便在代码中操作 JSON 数据,可以将其转换为 Dart 对象(Map)。
user_model.dart
class UserModel {
String name = '';
int age = 0;
UserModel(); // 默认构造函数,当不提供任何参数时,会使用默认值创建一个UserModel对象
UserModel.fromJson(Map<String, dynamic> json) // 命名构造函数
: name = json['name'], // 构造函数的初始化列表
age = json['age'],
}
person_model.dart
import 'package:test/models/user_model.dart';
class PersonModel {
String name = '';
int age = 0;
UserModel mother = UserModel();
List<UserModel> friends = <UserModel>[];
PersonModel();
PersonModel.fromJson(Map(String, dynamic) json)
: name = json['name'],
age = json['age'],
mother = json['mother'] == null ? UserModel() : UserModel.fromJson(json['mother']),
friends = json['friends'] == null ? <UserModel>[] : json['friends'].map(x => UserModel.fromJson(x)),
}
在模型类中序列化 JSON 数据,可以获得更好的类型安全。除此之外,对于嵌套的 JSON 对象的序列化,Model 类也会简化代码的阅读和维护。
var person = {
"name": "John",
"age": 18,
"mother": {
"name": "Alice",
"age": 43,
},
"friends": [
{
"name" : "Jack",
"age": 18,
},
{
"name": "Nancy",
"age": 17,
},
],
}