DateTime型データをjsonに変換しようとして、エラーとなった話をメモしておきます。
エラー内容
SharedPreferencesを使用してDateTime型データを端末に保存したかったので、一度データをjsonへ変換しました。
Json.encode(DateTime.Now())
すると、次のエラーが発生しました。
[VERBOSE-2:ui_dart_state.cc(198)] Unhandled Exception: Converting object to an encodable object failed: Instance of 'DateTime'
「DateTime型のインスタンスを、エンコード可能なオブジェクトに変換できませんでした」とのこです。
原因・解決方法
これは、Dartの言語仕様でした。つまり、DartではDateTime型をjsonへ変換できないようなのです。
このため、解決方法としてはDateTime型データを一度String型へ変換し、それからjsonへ変換する必要があります。
Json.encode(DateTime.Now().toString())
これで解決できました。