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入門】基礎文法とサンプルコード集 |
コメント