Flutter如何实现json转对象
在Flutter开发中,如何将JSON数据转换成Dart对象?目前遇到的问题是手动解析JSON比较繁琐,有没有更高效的方法?比如使用json_serializable或built_value这类工具库时,具体应该如何配置和使用?希望能提供一个完整的示例,包括模型类的定义和转换代码的实现步骤。
2 回复
在Flutter中,使用json_serializable包实现JSON转对象。步骤如下:
- 在
pubspec.yaml中添加依赖:json_annotation和json_serializable。 - 创建模型类,使用
@JsonSerializable()注解。 - 运行
build_runner生成序列化代码:flutter pub run build_runner build。 - 使用
fromJson和toJson方法转换。
更多关于Flutter如何实现json转对象的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
在 Flutter 中,实现 JSON 转对象主要有两种方式:手动解析和使用代码生成工具。以下是详细步骤:
1. 手动解析(适合简单对象)
-
步骤:
- 创建模型类,实现
fromJson和toJson方法。 - 使用
dart:convert库的json.decode()解析 JSON 字符串。
- 创建模型类,实现
-
示例代码:
import 'dart:convert';
class User {
final String name;
final int age;
User({required this.name, required this.age});
// JSON -> 对象
factory User.fromJson(Map<String, dynamic> json) {
return User(
name: json['name'],
age: json['age'],
);
}
// 对象 -> JSON
Map<String, dynamic> toJson() => {
'name': name,
'age': age,
};
}
// 使用示例
void main() {
String jsonString = '{"name": "Alice", "age": 25}';
Map<String, dynamic> userMap = json.decode(jsonString);
User user = User.fromJson(userMap);
print(user.name); // 输出: Alice
}
2. 使用代码生成工具(推荐用于复杂对象)
- 工具:
json_serializable+build_runner - 步骤:
- 添加依赖到
pubspec.yaml:
dependencies: json_annotation: ^4.8.1 dev_dependencies: build_runner: ^2.4.6 json_serializable: ^6.7.1- 创建模型类并添加注解:
import 'package:json_annotation/json_annotation.dart'; part 'user.g.dart'; // 生成的文件 [@JsonSerializable](/user/JsonSerializable)() class User { final String name; final int age; User({required this.name, required this.age}); factory User.fromJson(Map<String, dynamic> json) => _$UserFromJson(json); Map<String, dynamic> toJson() => _$UserToJson(this); }- 运行生成命令:
flutter pub run build_runner build - 添加依赖到
注意事项
- 确保 JSON 键与模型字段名一致,或用
@JsonKey(name: 'field_name')注解映射。 - 处理嵌套对象时,在嵌套类上也添加
[@JsonSerializable](/user/JsonSerializable)()。
选择手动方式适用于简单场景,代码生成工具更适合大型项目,能减少错误并提高效率。

