Dart:
JSONを活用する

方法:

Dartはdart:convertライブラリを使用してJSONをサポートしており、JSONのエンコードとデコードを直感的に行えるようにしています。以下は基本操作の例を示しています:

JSON文字列をDartオブジェクトに解析する:

import 'dart:convert';

void main() {
  // 例 JSON文字列
  String jsonString = '{"name": "John", "age": 30, "email": "[email protected]"}';
  
  // JSONをDart Mapにデコード
  Map<String, dynamic> user = jsonDecode(jsonString);
  
  print('Hello, ${user['name']}! You are ${user['age']} years old.');
  // 出力: Hello, John! You are 30 years old.
}

DartオブジェクトをJSON文字列にエンコードする:

import 'dart:convert';

void main() {
  // 例 Dartオブジェクト
  Map<String, dynamic> user = {
    'name': 'Jane',
    'age': 25,
    'email': '[email protected]'
  };
  
  // Dart MapをJSONにエンコード
  String jsonString = jsonEncode(user);
  
  print(jsonString);
  // 出力: {"name":"Jane","age":25,"email":"[email protected]"}
}

複雑なモデルにjson_serializableを使用する: 複雑なデータモデルに対して、手動でのシリアライズは手間がかかります。json_serializableパッケージはこのプロセスを自動化します。追加の設定が必要で、pubspec.yamlへの依存関係の追加やビルドファイルの作成を含みます。セットアップ後、以下のように使用できます:

  1. アノテーションを使用してモデルを定義する:
import 'package:json_annotation/json_annotation.dart';

part 'user.g.dart';

@JsonSerializable()
class User {
  String name;
  int age;
  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);
}
  1. シリアライズのひな形を生成する: ビルドランナーコマンドを使用してuser.g.dartファイルを生成します:
flutter pub run build_runner build
  1. モデルを使用する:
void main() {
  // JSONをUserに解析
  Map userMap = jsonDecode('{"name": "John", "age": 30, "email": "[email protected]"}');
  User user = User.fromJson(userMap);
  
  print('User: ${user.name}, Age: ${user.age}');
  // 出力: User: John, Age: 30

  // UserをJSONに戻す
  String jsonString = jsonEncode(user.toJson());
  print(jsonString);
  // 出力: {"name":"John","age":30,"email":"[email protected]"}
}

これらの例は、Dartでの基本的および高度なJSONのやり取りを示しており、開発者がアプリケーションのデータシリアライゼーションタスクをスムーズに扱えるようにしています。