flutterを触り始めた。
APIのレスポンスをjsonで受け取って処理していたところ、上手くいかなかったので、調べたことをメモ
https://medium.com/flutter-community/parsing-complex-json-in-flutter-747c46655f51
この記事が初心者にとてもやさしかった。
以下に記事の内容をメモ。
初心者はまずjson:convertライブラリを使い、慣れて大きなプロジェクトになったらjson serializable などの generator ライブラリを使う。
シリアライズ:データを書くこと。オブジェクトなどに
デシリアライズ:その逆
factory メソッドで受け取る引数の形を指定する必要があるが、jsonファイルは多くの場合key,valueの形が決まっていないので、複数の形を取る場合はそれをdynamicと表記する。
valueが一つの値の場合はいいが、ここでvalueにarrayが入ってくると複雑。
DartにはArray型がなくListしかない。ここはPythonに近い
そこでList<String>型を用意するが、プログラムはListの中身のデータ型が分かっておらず、List<dynamic>として認識しているので、ここでエラーが発生する。
type 'List<dynamic>' is not a subtype of type 'List<String>'
明示的にデータ型を教える必要がある。
var hoge = map_object["key"]
List<String> list = new List<String>.from(hoge)
といった具合。
"key" : [
{"ho": 1},
{"ge": 2}
]
みたいなパターンの例も、参考サイトに書いてある。