json_serializable は、JSON をモデルに変換するために dart が公式に推奨および提供する方法です。
JSON シリアル化データ テンプレートを生成する自動ソース コード ジェネレーター。
シリアル化されたデータ コードを手動で記述または維持する必要がなくなるため、実行時に JSON データをシリアル化するリスクを最小限に抑えることができます。
ステップ 1: 関連する依存関係を追加する
依存関係は、プロジェクトの依存関係 (依存関係)、開発の依存関係 (dev_dependencies) に分けられます。
注: Flutter pub get を実行して、これらの依存関係がプロジェクトにあることを確認する必要があります
dependencies:
json_annotation: ^3.0.1
dev_dependencies:
json_serializable: ^3.2.5
build_runner: ^1.8.0
ステップ 2: json_serializable の形式でモデル クラスを作成する
//以一个简单的Json数据作为例子
final jsonInfo = {
"nickname": "coderwhy",
"level": 18,
"courses": ["语文", "数学", "英语"],
"register_date": "2222-2-22",
"computer": {
"brand": "MackBook",
"price": 1000
}
};
対応するモデルを作成します (json_serializable のように、コードは作成が完了した後にエラーを報告します)
- part 'user.g.dart' ==>これは、json_serializable が後で自動的に生成するのに役立つファイルです
- JsonSerializable() ==>注釈: どのクラスを変換する必要があるかを json_serializable に伝えます
- JsonKey==>マッピング関係が異なる場合、マッピング関係を指定できます
- また、コンストラクターが必要です
- 対応するファクトリ コンストラクタが必要 ==> UserToJson(this) によって呼び出されるメソッドは現在エラーを報告し、生成するには json_serializable が必要です
- toString メソッドは必要ありません。後でテストします
ユーザー クラスのコード:
import 'package:json_annotation/json_annotation.dart';
import 'model/computer.dart';
part 'user.g.dart';
@JsonSerializable()
class User {
String name;
String email;
@JsonKey(name: "register_date")
String registerDate;
List<String> courses;
Computer computer;
User(this.name, this.email, this.registerDate, this.courses, this.computer);
factory User.fromJson(Map<String, dynamic> json) => _$UserFromJson(json);
Map<String, dynamic> toJson() => _$UserToJson(this);
@override
String toString() {
return 'User{name: $name, email: $email, registerDate: $registerDate, courses: $courses, computer: $computer}';
}
}
Computer クラスのコード:
import 'package:json_annotation/json_annotation.dart';
part 'computer.g.dart';
@JsonSerializable()
class Computer {
String brand;
double price;
Computer(this.brand, this.price);
factory Computer.fromJson(Map<String, dynamic> json) => _$ComputerFromJson(json);
Map<String, dynamic> toJson() => _$ComputerToJson(this);
@override
String toString() {
return 'Computer{brand: $brand, price: $price}';
}
}
ステップ 3: JSON シリアル化コードを生成する
プロジェクト ターミナルで次のコマンドを実行します。
-
この命令は、JSON シリアライゼーション コードを生成するためのものです。
-
フラッター パブ ラン build_runner ビルド
または以下のコマンドを実行します。
-
ファイルの変更をリッスンし、JSON シリアル化されたコードを再生成します
-
フラッター パブ ラン build_runner ウォッチ
ステップ 4: コードをテストする
final jsonInfo = {
"nickname": "coderwhy",
"level": 18,
"courses": ["语文", "数学", "英语"],
"register_date": "2222-2-22",
"computer": {
"brand": "MackBook",
"price": 1000
}
};
final user = User.fromJson(jsonInfo);
print(user);
オンラインデータ分析
URL:
1. URL 1
2. URL 2
URL 1 は、データが複雑な場合に異常な変換を行う可能性があるため、URL 2 を使用することをお勧めします