일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
- 오준석의생존코딩
- 오존석의 생존코딩
- 모두의 연구소 # 오준석의생존코딩# 오름캠프
- 플러터
- 생존코딩
- 오름캠프
- ㅇ
- 패스트 캠퍼스
- 오름캠프플러터
- 오준석의 생존코딩
- #패스트캠퍼스 #내일배움카드 #국비지원 #K디지털기초역량훈련 #바이트디그리 #자바인강
- Tag #패스트캠퍼스 #내일배움카드 #국비지원 #K디지털기초역량훈련 #바이트디그리 #자바인강
- 모두연구소
- 모두의연구소 오준석생존코딩 오름캠프
- 모두의연구소
- Today
- Total
꾸준히 하고싶은 개발자
freezed 와 json_serializable 차이 본문
- Freezed:
freezed는 코드 생성 패키지로, Dart에서 쉽게 불변 클래스를 생성할 수 있게 해줍니다. 필요한 코드를 자동으로 생성하여 불변 클래스를 위한 보일러플레이트 코드 작성을 줄여줍니다.
동등성(equality)과 해시코드(hashcode) 메서드를 생성하고, copyWith 메서드를 생성할 수 있으며, 필요하다면 toJson과 fromJson 메서드도 생성할 수 있습니다.
클래스에 @freezed와 @immutable를 주석으로 달아 불변 데이터 클래스를 생성합니다.
import 'package:freezed_annotation/freezed_annotation.dart';
part 'user.freezed.dart';
@freezed
abstract class User with _$User {
const factory User({String name, int age}) = _User;
}
- json_serializable:
json_serializable은 또 다른 Dart의 코드 생성 패키지로, JSON 직렬화와 역직렬화를 위한 코드를 생성합니다.
클래스에 제공된 주석을 기반으로 toJson 및 fromJson 메서드를 생성합니다.
클래스에 @JsonSerializable()와 @JsonKey()를 주석으로 달아 직렬화와 역직렬화 과정을 사용자가 커스텀할 수 있습니다.
import 'package:json_annotation/json_annotation.dart';
part 'user.g.dart';
@JsonSerializable()
class User {
final String name;
final int age;
User({this.name, this.age});
factory User.fromJson(Map<String, dynamic> json) => _$UserFromJson(json);
Map<String, dynamic> toJson() => _$UserToJson(this);
}
요약하자면, freezed는 copyWith와 같은 편리한 메서드가 있는 불변 데이터 클래스를 생성하는 데 중점을 두고 있으며, json_serializable은 Dart 클래스의 JSON 직렬화와 역직렬화 메서드를 생성하는 데 중점을 두고 있습니다. 그러나 두 패키지는 동일한 프로젝트에서 함께 사용하여 JSON 직렬화와 역직렬화가 가능한 동시에 불변 데이터 클래스를 생성할 수 있습니다.
Freezed:
freezed 패키지는 Dart에서 불변성을 가진(immutable) 데이터 클래스를 생성하는 데 도움을 주는 패키지입니다.
보통 데이터 모델이나 상태 관리를 위해 사용됩니다. 예를 들어, 사용자(User) 정보를 담고 있는 클래스를 만들 때 사용할 수 있습니다.
freezed를 사용하면, 클래스를 @freezed 어노테이션으로 주석 처리하고, 클래스 내 필드들을 포함하여 생성자를 정의합니다.
이후에 코드를 생성하면, freezed가 동등성 검사, 해시 코드 생성, 복사 생성자(copyWith) 등과 같은 유용한 메서드들을 자동으로 생성합니다.
이렇게 생성된 클래스는 수정할 수 없으며, 불변 객체로서의 안전성을 보장합니다.
json_serializable:
json_serializable 패키지는 Dart 클래스를 JSON 직렬화 및 역직렬화할 수 있도록 도와주는 패키지입니다.
주로 외부 API와 통신하거나, 파일 입출력을 할 때 사용됩니다.
클래스를 @JsonSerializable() 어노테이션으로 주석 처리하고, 필요한 경우 @JsonKey() 어노테이션을 사용하여 필드의 이름을 지정할 수 있습니다.
코드를 생성하면, json_serializable가 toJson 및 fromJson과 같은 메서드를 자동으로 생성합니다. 이러한 메서드를 사용하여 객체를 JSON 형식으로 직렬화하거나 JSON을 객체로 역직렬화할 수 있습니다.
사용 방법:
보통은 먼저 freezed를 사용하여 불변 데이터 클래스를 만든 후, 이 클래스를 json_serializable로 JSON 직렬화/역직렬화할 수 있습니다.
따라서 freezed를 사용하여 데이터 모델을 정의한 다음, 해당 모델을 json_serializable을 사용하여 JSON 형식으로 직렬화하거나 역직렬화합니다.
간단히 말해서, freezed는 불변성 데이터 모델을 만드는 데 사용되고, json_serializable은 해당 데이터 모델을 JSON 형식으로 직렬화하고 역직렬화하는 데 사용됩니다. 함께 사용하면 효율적으로 데이터를 다룰 수 있습니다.