Dart에서 json을 대상으로 변환할 때 int를 enum으로 변환합니다
TL;DR
Dart에서 json을 대상으로 변환할 때 int를 enum으로 변환합니다
C#에서 그런 거 많이 하니까.
Dart에서도 하고 싶어요.
이런 제이슨
{
"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;
}
Reference
이 문제에 관하여(Dart에서 json을 대상으로 변환할 때 int를 enum으로 변환합니다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/junki555/articles/853ae8ff90dab9cc59b6텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)