[TIL] 20241128_ JSON 데이터 통신, MVVM 아키텍쳐

ds-k.dev·2024년 11월 28일
0

TIL

목록 보기
23/26

Dart에서 JSON 사용하기

직렬화

  • Dart 객체 -> Map -> String

역직렬화

  • String -> Map -> Dart 객체

Map을 사이에 끼우는 이유

jsonEncode , jsonDecode 함수가 있는데
Map, List 를 String으로 변환해주거나
Map, List 를 String 등으로 변환해줌

// json 데이터
String jsonString = """
{
	"name" : "김대성",
	"isMale" : true
}
"""

 var decodedData = jsonDecode(jsonString);
 print(decodedData); // {name: 김대성, isMale : true}
 print(decodedData.runtimeType} // Map<String, dynamic>
 
 String enCodedData = jsonEncode(decodedData); // 만들어진 map을 다시 json으로
 print(enCodedData); // {"name" : "김대성", "isMale" : true} 다시 json!

이걸 class 객체로 변환

Class User {
	String name;
   bool isMale;
   
   User({
   	required this.name;
       required this.isMale;
   });
   
   User.fromJson(Map<String, dynamic> map)
   	: this(
       	name: map["name"],
           isMale: map["isMale"],
         );
   // decode해서 만든 map을 받아 객체를 생성해주는 named 생성자
   
   Map<String, dynamic> toJson() {
   	return {
       	"name" : name,
           "isMale": isMale
       };
   }
   // jsonEncode를 할 수 있는 Map 객체로 바꿔주는 메소드
}

MVVM

Model + View + ViewModel

Model : 데이터를 서버 등에서 가지고 오는 계층
View : 화면을 구현하는 계층
ViewModel : Model 계층에서 데이터를 가지고 와서 가공 및 상태 관리

RiverPod

Riverpod을 사용하면 빠르게 MVVM을 만들 수 있다.

0개의 댓글