やりたいこと
freezed の fromJson
と toJson
を使って、シリアライズとデシリアライズをしたい。
具体的には、ローカルファイルに書き込んだ(シリアライズした)文字列をクラスとして読み込みたい(デシリアライズしたい)。
ポイント
ポイントは convert
パッケージの jsonEncode
と jsonDecoee
を間にかますことである。
コードサンプル
シリアライズ
以下は、Sample
クラスのインスタンスを受け取って文字列にするしてファイルに書き込む処理である。
static Future<File> createText(Sample sample) async { String contents = jsonEncode(sample.toJson()); final file = File('sample.txt'); await file.create(recursive: true); await file.writeAsString(contents); return file; }
デシリアライズ
以下は、File を受け取って Sample クラスを返す処理である。
static Future<Sample> getTextContents(File file) async { final contents = await file.readAsString(); try { Sample jsonContents = Sample.fromJson(jsonDecode(contents)); return jsonContents; } catch (e) { throw Exception('テキストファイルの中身の形式が間違っています。'); } }