Flutter을 사용하여 앱을 개발하거나 인터넷에서 데이터를 가져올 때, 중요한 단계 중 하나는 서버에서 데이터를 가져오는 과정입니다.
하지만 앱에서 서버로 직접 통신하는 것은 대부분 불가능합니다.
따라서 우리는 서버에서 웹에서 데이터를 앱에서 사용 가능한 형식으로 변환하고 전달해야 합니다.
이를 위해 JSON 파싱, XML 파싱 또는 웹 태그 파싱과 같은 다양한 방법을 사용할 수 있습니다.
이번 포스팅에서는 JSON 형식의 API 데이터를 Flutter 및 Dart로 파싱하는 방법에 대해 알아보겠습니다.
예를 들어, 아래 이미지와 같이 JSON 형식으로 인코딩된 API 데이터가 있다고 가정해 봅시다.
(아래 이미지는 필자의 처음으로 개발한 JVAK-API로, JVAK의 모든 데이터를 관리하는데 사용됩니다.)
이 API에서는 "jvak"라는 키 안에 List<Map<String, dynamic>> 타입의 데이터가 보관되어 있습니다.
API의 Map 데이터들을 살펴보면 아래와 같습니다.
{"sid":"ky20230501007Z","scode":"ky","title":"조용한 밤에","singer":"타나카 리에","ani_title":"기동전사 건담 SEED","ani_stage":"4기 ED","ani_category":"","song_number":"40599"},
API 데이터에 대해 잠시 설명을 하자면 아래와 같습니다.
이렇게 API를 분석하면 각 key 값과 value 값을 확인하여 어떤 데이터를 관리하는지 유추할 수 있으며, 각 데이터의 용도를 파악할 수 있습니다.
위 API 데이터의 구조 파악을 마쳤으니 Data Model을 제작합니다. Data Model을 제작하기 위해 필요한 정보는 API의 key 값과 API의 실제 데이터들의 타입(ex: Map<String, dynamic>)이 필요합니다.
아래는 위 API에서 사용하는 데이터를 Data Model로 제작한 코드입니다.
class JvakModel {
/// 노래 JSON 집합
String sid = '', // 노래 정보: 고유 식별자
scode = '', // 노래 정보: 곡 코드
title = '', // 노래 정보: 제목
singer = '', // 노래 정보: 가수
aniTitle = '', // 노래 정보: 애니메이션 제목
aniCategory = '', // 노래 정보: 애니메이션 카테고리
aniStage = '', // 노래 정보: 애니메이션 스테이지
number = ''; // 노래 정보: 곡 번호
/// 노래 JSON 데이터 Named Constructor
JvakModel.fromJson(Map<String, dynamic> json)
: sid = json['sid'],
scode = json['scode'],
title = json['title'],
singer = json['singer'],
aniTitle = json['ani_title'],
aniCategory = json['ani_category'],
aniStage = json['ani_stage'],
number = json['song_number'];
}
위 JvakModel 코드에 대해 간략하게 설명해보면 다음과 같습니다.
이러한 생성자를 사용하면 JSON 데이터를 쉽게 Dart 객체로 변환할 수 있어서, 앱에서 데이터를 다룰 때 편리합니다.
데이터 모델 클래스와 이와 관련된 생성자는 데이터 파싱 및 처리를 단순화하고 가독성을 높이는 데 도움을 줍니다.
이번 포스팅에서는 Data Model을 제작하는 방법에 대해 자세히 살펴보았습니다.
다음 포스팅에서는 이렇게 제작한 Data Model을 어떻게 화면에 표시하고 활용할지에 대해 다룰 예정입니다.
참고: 명명된 생성자 이해하기
[Flutter] Dart의 명명된 생성자(Named Constructor) 이해하기
Dart 언어는 객체 지향 프로그래밍 언어로, 클래스를 사용하여 객체를 생성하고 초기화할 수 있습니다. 이 포스팅에서는 Dart의 명명된 생성자(Named Constructor)에 대해 자세히 알아보겠습니다. 명명
space-engineers-developer.tistory.com
DataModel을 사용하여 api 데이터 화면에 보여주기 2편 -
[Flutter] DataModel을 사용하여 api 데이터 화면에 보여주기 (2)
이전 포스팅에서 Data Model을 제작하는 방법에 대해 자세히 살펴보았습니다. 이번 포스팅에서는 이렇게 제작한 Data Model을 어떻게 화면에 표시하고 활용할지에 대해 다룰 예정입니다. 아직 이전
space-engineers-developer.tistory.com
DataModel을 사용하여 api 데이터 화면에 보여주기 3편 -
[Flutter] DataModel을 사용하여 api 데이터 화면에 보여주기 (3)
이전 포스팅에서 데이터 모델(DataModel)을 만들고 API 서비스(apiService)를 설정하여 데이터를 가져오는 작업을 마쳤습니다. 이제 이 데이터를 사용자에게 친숙한 방식으로 표시하기 위해 UI를 만들
space-engineers-developer.tistory.com
[Flutter] DataModel을 사용하여 api 데이터 화면에 보여주기 (2) (0) | 2023.10.01 |
---|---|
[Flutter] Dart의 명명된 생성자(Named Constructor) 이해하기 (0) | 2023.10.01 |
[Flutter] Flutter로 Timer을 활용한 타이머 앱 만들기 (0) | 2023.09.28 |
[Flutter] Flutter Icons 라이브러리: 아이콘 사용의 핵심 (0) | 2023.09.27 |
[Flutter] Hero Widget에 대해 알아보자! (0) | 2023.09.24 |