프로젝트를 할때마다 매번 서버에서 받아오는 데이터를 클래스로 처리할때마다
Json 직렬화를 일일히 작성해야하는 번거로움이 많았고
오타 하나로 데이터를 받지 못해 에러가 나는 상황도 종종 있었는데
Json Serializable 패키지를 사용하면
실수 및 번거로움을 해결해 작업 속도 향상에 도움을 줍니다.
https://pub.dev/packages/json_serializable
json_serializable | Dart package
Automatically generate code for converting to and from JSON by annotating Dart classes.
pub.dev
설치하기
flutter pub add json_annotation dev:build_runner dev:json_serializable
작업 중인 프로젝트 폴더에서 쉘에서 해당 명령어 실행
1. 직렬화할 클래스 생성
- 기존 Json 직렬화 클래스
2. 직렬화 패키지 적용
- part '[파일명].g.dart' 를 추가하기
- 클래스 위에 @JsonSerializable() 어노테이션 추가
사진과 같이 존재하지 않는 파일 및 메서드로 에러가 발생하는게 정상입니다.
생성한 적이 없기 떄문에
- 프롬프트에 밑에 해당하는 명령어 입력
dart run build_runner build
위와 같이 뜨면 성공입니다.
이제 같은 폴더에 member.a.dart 파일이 생성되었습니다.
3. 직렬화 패키지 사용
- fromJson 및 toJson 메서드를 해당 코드와 같이 추가
클래스안에 만약 또 다른 클래스가 있다면
@JsonSerializable() 파라미터에
explicitToJson : true 로 주게 되면 안에 다른 클래스가 있음을 파악합니다
이렇게 하면 끝입니다.
Json Serializable에서 지원하는 변수는
일반 타입 변수 | BigInt, bool, DateTime, double, Duration, Enum, int, Iterable, List, Map, num, Object, Record, Set, String, Uri |
콜렉션 타입 변수 | Iterable, List, Map, Record, Set |
또한 Map의 경우 키값이 BigInt, DateTime, Enum, int, Object, String, Uri 이 타입 중 하나여야 한다고 합니다.
만약 지원하지 않는 변수가 있을 경우에는 커스텀을 할 수 있는데 아직 쓸일이 없어서..
'Dev > Flutter' 카테고리의 다른 글
[Flutter] Web 업데이트 이후 캐시 문제 (1) | 2023.06.15 |
---|---|
[Flutter] fvm으로 버전관리하기 (0) | 2023.05.12 |
Flutter Mac OS 설치 (0) | 2022.09.01 |