Flutter JSON解析 #

一、手动解析 #

1.1 基本解析 #

dart
import 'dart:convert';

final jsonStr = '{"name": "John", "age": 30}';
final Map<String, dynamic> data = jsonDecode(jsonStr);

print(data['name']);
print(data['age']);

1.2 模型类 #

dart
class User {
  final String name;
  final int age;
  
  User({required this.name, required this.age});
  
  factory User.fromJson(Map<String, dynamic> json) {
    return User(
      name: json['name'],
      age: json['age'],
    );
  }
  
  Map<String, dynamic> toJson() {
    return {
      'name': name,
      'age': age,
    };
  }
}

final user = User.fromJson(jsonDecode(jsonStr));

二、json_serializable #

2.1 安装 #

yaml
dependencies:
  json_annotation: ^4.8.1

dev_dependencies:
  json_serializable: ^6.7.1
  build_runner: ^2.4.7

2.2 定义模型 #

dart
import 'package:json_annotation/json_annotation.dart';

part 'user.g.dart';

@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);
}

2.3 生成代码 #

bash
flutter pub run build_runner build

三、总结 #

3.1 解析方式 #

方式 特点
手动解析 简单直接
json_serializable 自动生成

3.2 下一步 #

让我们学习 本地存储

最后更新:2026-03-28