编写解析JSON的Dart模型类可以使用Dart语言中的json_serializable库来简化操作。下面是一个示例:
首先,需要在pubspec.yaml文件中添加依赖:
dependencies:
json_annotation: ^4.0.0
json_serializable: ^4.1.0
然后,在Dart文件中导入相关库:
import 'package:json_annotation/json_annotation.dart';
part 'model.g.dart';
接下来,定义一个Dart类,并使用@JsonSerializable注解标记该类为可序列化的JSON模型类:
@JsonSerializable()
class MyModel {
final String name;
final int age;
MyModel(this.name, this.age);
factory MyModel.fromJson(Map<String, dynamic> json) => _$MyModelFromJson(json);
Map<String, dynamic> toJson() => _$MyModelToJson(this);
}
在上述代码中,name和age是模型类的属性,构造函数用于初始化这些属性。fromJson和toJson方法分别用于将JSON转换为模型对象和将模型对象转换为JSON。
接下来,需要运行以下命令生成序列化/反序列化的代码:
flutter pub run build_runner build
运行完毕后,会在同级目录下生成一个名为model.g.dart的文件,其中包含了自动生成的序列化/反序列化代码。
最后,可以使用以下代码来解析JSON数据:
import 'dart:convert';
void main() {
String jsonStr = '{"name": "John", "age": 25}';
Map<String, dynamic> json = jsonDecode(jsonStr);
MyModel model = MyModel.fromJson(json);
print(model.name); // 输出:John
print(model.age); // 输出:25
}
这样就完成了解析JSON的Dart模型类的编写。对于更复杂的JSON结构,可以在模型类中嵌套其他模型类或使用@JsonKey注解来处理不同的字段名。
领取专属 10元无门槛券
手把手带您无忧上云