728x90
https://link2me.tistory.com/2346 게시글에서 Live Templete를 추가한 것을 이용하여 코드를 작성한다.
Android Studio 에서 파일명을 생성하고 나서 frf 를 입력하면 자동 완성 포멧이 만들어진다.
여기에서 Class Name을 입력하고, part 파일명을 소문자로 입력하면 된다.
import 'package:json_annotation/json_annotation.dart';
import 'package:freezed_annotation/freezed_annotation.dart';
part 'person.freezed.dart';
part 'person.g.dart';
@freezed
class Person with _$Person {
factory Person({
required String name,
required int age,
}) = _Person;
factory Person.fromJson(Map<String, dynamic> json) => _$PersonFromJson(json);
}
|
위 코드를 추가한 후에
터미널창에서 dart run build_runner build 를 하면 자동으로 2개의 파일이 추가된다.
변경될 때마다 자동으로 파일이 추가/수정되도록 하고 싶다면 dart run build_runner watch 명령어를 입력한다.
※ 상속이 포함된 Class 작성에는 어려움이 있다고 하니 참고
import 'dart:convert';
import 'package:dart_ex/model/person.dart';
void main() {
Person a = Person(name: '철수', age: 10);
Person b = a; // 얕은 복사
// a.name = '영희'; // 불변 객체이므로 name 수정 불가
// copyWith()
a = a.copyWith(name: '영희'); // 깊은 복사
// toString()
print("toString() : $a");
print("toString() : $b");
// 값 비교(Value Equality)
bool valueEquality = Person(name: "철수", age: 1) == Person(name: "철수", age: 1);
print("값 비교 : $valueEquality");
// JSON 직렬화(Serialization)
Map<String, dynamic> map = a.toJson();
print("toJson() : $map");
String jsonString = jsonEncode(map);
// JSON 역직렬화(Deserialization)
Map<String, dynamic> jsonMap = jsonDecode(jsonString);
Person person = Person.fromJson(jsonMap);
print("fromJson() : $person");
}
|
728x90
'Flutter 앱 > Flutter Basic' 카테고리의 다른 글
Flutter TIP 모음 (0) | 2024.01.04 |
---|---|
Flutter JSON Serializable의 중요성 (2) | 2023.12.21 |
Flutter Go_Router 버전업에 따른 수정사항 (0) | 2023.12.04 |
Flutter Model Class JSON Serialize g.dart 자동 생성 (1) | 2023.11.21 |
플러터 미세먼지 공공데이터 API 신청 및 postman 에서 확인 (0) | 2023.11.08 |