Dart で json をオブジェクトに変換するときに int を enum に変換する
TL;DR
- Flutter / Dart Convert Int to Enum | Stack Overflow
Dart で json をオブジェクトに変換するときに int を enum に変換する
C# で似たようなことをよくやっていたので
Dart(Flutter) でもやりたかった
こんなjsonを
{
"playlist":[
{
"category": 0,
"title": "Foo Video",
},
{
"category": 0,
"title": "Bar Video",
},
{
"category": 1,
"title": "Baz Music",
}
]
}
こういうenumとオブジェクトに変換したいとすると
enum ContentCategory {
video,
music,
}
class Content {
final ContentCategory category;
final String title;
}
こうしてやればいい
Future<List<Content>> fetchContents() async {
final response = await http.get('https://hoge.com/json');
if (response.statusCode == 200) {
final jsonMap = jsonDecode(response.body) as Map<String, dynamic>;
final result = <Content>[];
if (jsonMap['playlist'] != null) {
jsonMap['playlist'].forEach((dynamic v) {
result.add(new Content.fromJson(v as Map<String, dynamic>));
});
}
return result;
} else {
throw Exception('Faild to load album.');
}
}
enum ContentCategory {
video,
music,
}
class Content {
Content(
{this.category,
this.title});
factory Content.fromJson(Map<String, dynamic> json) {
return Content(
category: ContentCategory.values[json['category'] as int], /* これ */
title: json['title'] as String,
);
}
final ContentCategory category;
final String title;
}
Author And Source
この問題について(Dart で json をオブジェクトに変換するときに int を enum に変換する), 我々は、より多くの情報をここで見つけました https://zenn.dev/junki555/articles/853ae8ff90dab9cc59b6著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Collection and Share based on the CC protocol