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
への依存関係の追加やビルドファイルの作成を含みます。セットアップ後、以下のように使用できます:
- アノテーションを使用してモデルを定義する:
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);
}
- シリアライズのひな形を生成する:
ビルドランナーコマンドを使用して
user.g.dart
ファイルを生成します:
flutter pub run build_runner build
- モデルを使用する:
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のやり取りを示しており、開発者がアプリケーションのデータシリアライゼーションタスクをスムーズに扱えるようにしています。