DartでカスタムクラスをJSON(文字列)へ変換する方法についてソースコード付きでまとめました。
【Dart】カスタムクラス > JSON(文字列)
dart:convertで、自作のカスタムクラスを変換する場合は、toJsonメソッドをクラスに実装します。
toJsonメソッドは、JSON文字列へ変換可能なオブジェクトを返すメソッドです。
【サンプルコード】Dart
サンプルプログラムのソースコードです。
import 'dart:convert';
void main() {
MyClass1 my1 = new MyClass1("ONE", 1);
MyClass2 my2 = new MyClass2("TWO", 2);
// toJsonがあればエンコード可能
print(json.encode(my1)); // {"text":"ONE","number":1}
// toJsonがないクラスはエラー
print(json.encode(my2));
/*
Unhandled exception:
Converting object to an encodable object failed: Instance of 'MyClass2'
#0 _JsonStringifier.writeObject (dart:convert/json.dart:647:7)
#1 _JsonStringStringifier.printOn (dart:convert/json.dart:834:17)
#2 _JsonStringStringifier.stringify (dart:convert/json.dart:819:5)
#3 JsonEncoder.convert (dart:convert/json.dart:255:30)
#4 JsonCodec.encode (dart:convert/json.dart:166:45)
#5 main (file:///C:/prog/flutter/a/test.dart:12:14)
#6 _startIsolate. (dart:isolate-patch/isolate_patch.dart:301:19)
#7 _RawReceivePortImpl._handleMessage (dart:isolate-patch/isolate_patch.dart:172:12)
*/
}
class MyClass1 {
String text;
int number;
MyClass1(this.text, this.number);
// encode時に呼ばれ、JSON文字列へと変換可能なオブジェクト(今回はmap型)を返す
dynamic toJson() => {"text":text, "number":number};
}
class MyClass2 {
String text;
int number;
MyClass2(this.text, this.number);
}
– | 関連記事 |
---|---|
1 | ■【Flutter入門】iOS、Android、Windowsアプリ開発 |
2 | 【Dart入門】基礎文法とサンプルコード集 |
コメント