Flutter如何将json转换为dart
在Flutter开发中,我想将一个JSON字符串转换为Dart对象,但不太清楚具体该如何操作。有没有简单的方法可以实现这个转换?比如是否有一些现成的库或工具可以自动生成Dart类?另外,如果JSON结构比较复杂,有没有推荐的解析方式?希望能提供一个详细的示例代码说明。
2 回复
使用 json.decode() 将 JSON 字符串转换为 Dart 对象。对于复杂结构,可使用 json_annotation 包自动生成转换代码。
更多关于Flutter如何将json转换为dart的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
在Flutter中将JSON转换为Dart对象,主要有以下两种方法:
1. 手动序列化(推荐用于简单JSON)
import 'dart:convert';
class User {
final String name;
final int age;
final String email;
User({required this.name, required this.age, required this.email});
// JSON转Dart对象
factory User.fromJson(Map<String, dynamic> json) {
return User(
name: json['name'],
age: json['age'],
email: json['email'],
);
}
// Dart对象转JSON
Map<String, dynamic> toJson() {
return {
'name': name,
'age': age,
'email': email,
};
}
}
// 使用示例
void main() {
String jsonString = '{"name": "张三", "age": 25, "email": "zhangsan@example.com"}';
// JSON字符串转Dart对象
Map<String, dynamic> jsonMap = jsonDecode(jsonString);
User user = User.fromJson(jsonMap);
print(user.name); // 输出: 张三
// Dart对象转JSON字符串
String newJsonString = jsonEncode(user.toJson());
print(newJsonString);
}
2. 自动序列化(推荐用于复杂JSON)
使用 json_serializable 包自动生成代码:
步骤1:添加依赖
dependencies:
flutter:
sdk: flutter
json_annotation: ^4.8.1
dev_dependencies:
build_runner: ^2.4.4
json_serializable: ^6.7.1
步骤2:创建模型类
import 'package:json_annotation/json_annotation.dart';
part 'user.g.dart';
@JsonSerializable()
class User {
final String name;
final int age;
final String email;
User({required this.name, required this.age, required this.email});
factory User.fromJson(Map<String, dynamic> json) => _$UserFromJson(json);
Map<String, dynamic> toJson() => _$UserToJson(this);
}
步骤3:生成代码 在终端运行:
flutter pub run build_runner build
选择建议
- 简单JSON:使用手动序列化
- 复杂JSON:使用
json_serializable自动生成 - 需要类型安全:推荐自动序列化方式
自动序列化方式虽然需要额外配置,但提供了更好的类型安全和维护性。

