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 自动生成
  • 需要类型安全:推荐自动序列化方式

自动序列化方式虽然需要额外配置,但提供了更好的类型安全和维护性。

回到顶部