0Pricing
Dart Academy · レッスン

json_serializable の実践

モデルのシリアライズを自動生成します

「json_serializable の実践」はCoddyKit上の無料Dart Academyレッスンです。 これはレッスン4/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはDart Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Dart Academyコースには全4レッスンが含まれています。

JSON 定型コードの問題

fromJson と toJson を手作業で書くのは面倒で、間違いも起こりやすいものです。json_serializable パッケージを使えば、モデルから両方を自動生成できます。📦

パッケージを追加する

通常の依存関係として json_annotation が必要です。さらに、生成に使う json_serializable と build_runner を開発依存関係として追加します。

dependencies:
  json_annotation: ^4.9.0

クラスにアノテーションを付ける

モデルに @JsonSerializable を付けます。このアノテーションによって、ジェネレーターはそのクラスのシリアライズコードを生成します。

@JsonSerializable()
class User {
  final String name;
  User(this.name);
}

part ファイルを宣言する

part ディレクティブを追加して、生成されたヘルパーをファイルから利用できるようにします。名前は元のファイル名に .g.dart を付けたものになります。

part 'user.g.dart';

fromJson を接続する

生成された関数に処理を委譲するファクトリーを追加します。_$UserFromJson ヘルパーはビルダーが自動で作成します。

factory User.fromJson(Map<String, dynamic> j) =>
    _$UserFromJson(j);

toJson を接続する

生成された書き出し関数を呼び出すメソッドを追加します。_$UserToJson ヘルパーによって、オブジェクトを JSON マップに戻せます。

Map<String, dynamic> toJson() => _$UserToJson(this);

コードを生成する

build_runner を1回実行すると、user.g.dart ファイルが生成され、両方のヘルパー関数が完全に実装された状態ですぐに使えるようになります。

dart run build_runner build

JSON のキー名を変更する

API のフィールド名が Dart の名前と異なる場合は、@JsonKey を使って対応付けます。コードを読みやすく保ったまま、JSON をサーバーの形式に合わせられます。

@JsonKey(name: 'full_name')
final String fullName;

デフォルト値を指定する

フィールドがない場合の代替値を指定できます。defaultValue オプションにより、JSON にキーが存在しないときに値が補われます。

@JsonKey(defaultValue: 0)
final int score;

ネストしたモデルもそのまま使える

フィールドが別の @JsonSerializable クラスの場合、ジェネレーターが再帰的にシリアライズします。ネストしたオブジェクトのために追加の作業をする必要はありません。

通常の Dart と同じように使う

生成後は、通常のメソッド呼び出しだけで解析やエンコードを行えます。生成された helpers は隠されるため、呼び出し側のコードも自然に読めます。

final u = User.fromJson(data);
final back = u.toJson();

確認問題

クラスを JSON コード生成の対象にするアノテーションはどれですか?

まとめ

@JsonSerializable を付け、fromJson と toJson を接続してから build_runner を実行します。@JsonKey を使えば、フィールド名とデフォルト値を対応付けられます。🎉

よくある質問

「json_serializable の実践」レッスンは無料ですか?

はい。「json_serializable の実践」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Dart Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Dart Academyコースには全4レッスンが含まれています。

「json_serializable の実践」で何を学びますか?

モデルのシリアライズを自動生成します ブラウザで直接実行するハンズオンコードでDart Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Dart Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのDart Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン4/4です。

「json_serializable の実践」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このDart Academyレッスンでコードを書いて実行できますか?

はい。すべてのDart Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. 組み込みアノテーション: override、deprecated
  2. カスタムアノテーションの作成
  3. build_runner によるコード生成
  4. json_serializable の実践
← Dart Academyに戻る