Flutter json转模型
时间: 2024-10-25 13:08:17 浏览: 36
在Flutter中,将JSON数据转换为自定义模型(通常是一个 Dart 类或结构体)的过程叫做序列化(Serialization)。当你从网络请求、本地存储或其他数据源获取 JSON 数据时,你需要将其解析并填充到对应的模型类中。
`json_annotation` 和 `dart:convert` 这两个库经常一起用于这个目的:
1. `json_annotation`: 它是一个注解驱动的工具,允许你在模型类上添加注解,告诉它如何映射 JSON 字段到属性。例如,你可以使用 `@JsonKey(name: 'field_name')` 来指定字段名与JSON键的不同。
```dart
part 'model.g.dart'; // 使用json_serializable生成g.dart文件
import 'package:json_annotation/json_annotation.dart';
@JsonSerializable()
class UserModel {
@JsonKey(name: 'id')
final int userId;
@JsonKey(name: 'name')
final String userName;
UserModel({required this.userId, required this.userName});
factory UserModel.fromJson(Map<String, dynamic> json) => _$UserModelFromJson(json);
Map<String, dynamic> toJson() => _$UserModelToJson(this);
}
```
2. `dart:convert`: 提供了 `jsonDecode()` 和 `jsonEncode()` 函数,分别用于将JSON字符串解码成Map,然后使用刚才定义的工厂函数 `fromJson` 将Map转换回模型实例。
```dart
String jsonString = '{"id": 1, "name": "John"}';
final user = UserModel.fromJson(jsonDecode(jsonString));
```
阅读全文