inflearn logo
강의

Course

Instructor

Flutter Intermediate Part 2 - Practical App Development - US Stock App (with Clean Architecture)

Parsing company information JSON

DTO 작성시 freezed 3.0 변경 부분 문의

167

mhlee

15 asked

0

이전 강의에서 freezed 3.0 변경점으로 default 사용시 일반 생성자 초기화하듯 사용하는 방법으로

진행해도 된다고 하셨는데

 

@JsonKey 사용법도 기존 생성자 작성과 동일하기 하고 아래 *참고소스1과 동일하게 진행해도 되는지 문의드립니다.

 

참고소스1

import 'package:freezed_annotation/freezed_annotation.dart';

part 'company_info_dto.freezed.dart';
part 'company_info_dto.g.dart';

// ignore_for_file: annotate_overrides
@freezed
@JsonSerializable()
class CompanyInfoDto with _$CompanyInfoDto {
  @JsonKey(name: 'Symbol')
  final String? symbol;
  @JsonKey(name: 'Name')
  final String? name;
  @JsonKey(name: 'Description')
  final String? description;
  @JsonKey(name: 'Industry')
  final String? country;
  @JsonKey(name: 'Country')
  final String? industry;
  const CompanyInfoDto({
    this.symbol,
    this.name,
    this.description,
    this.industry,
    this.country,
  });

  factory CompanyInfoDto.fromJson(Map<String, dynamic> json) =>
      _$CompanyInfoDtoFromJson(json);
  Map<String, dynamic> toJson() => _$CompanyInfoDtoToJson(this);
}

- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!
- 먼저 유사한 질문이 있었는지 검색해보세요.
- 서로 예의를 지키며 존중하는 문화를 만들어가요.
- 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.

flutter ios android

Answer 2

1

survivalcoding

네. 이렇게 하시면 됩니다.


아니면 DTO 는 freezed 안 쓰고 json to dart 플러그인으로 만드는게 오히려 편하고 빌드 시간도 줄일 수 있습니다.

freezed 가 copyWith, toString, == 재정의를 도와주는데 DTO 는 다 필요가 없고 fromJson, toJson 이 있는 모든 필드가 Nullable 인 객체면 되기 때문입니다.

0

mhlee

감사합니다

0

communityai8509

안녕하세요, 인프런 AI 인턴입니다.
mhlee님께서 질문하신 내용과 관련하여 freezedJsonKey 사용법에 관해서 안내해 드리겠습니다.

문제의 핵심

freezed 3.0 버전에서는 데이터 클래스를 생성할 때 변경된 점이 몇 가지 있습니다. 특히, JsonKey 사용법은 freezed의 기능을 통해 자동으로 toJsonfromJson 메서드를 생성할 수 있도록 구성됩니다.

주요 사항

  1. @freezed@JsonSerializable() 조합: freezed 플러그인과 json_serializable의 경우 서로 호환됩니다. 따라서 @JsonSerializable()를 클래스에 사용할 수 있으며, 이는 자동으로 JSON (de)serialization 기능을 추가해줍니다.

  2. 생성자와 JsonKey 사용:

    • JsonKey는 직렬화와 역직렬화 시에 JSON 파일의 키 이름을 지정하는 데 사용됩니다.
    • 현재 작성하신 예시는 적합하게 사용되고 있으며, @JsonKey 어노테이션을 통해 JSON 키를 지정하는 것은 올바른 방법입니다.

코드 설명

@JsonKey(name: 'Symbol')
final String? symbol;

위와 같은 방식으로 @JsonKey 어노테이션을 사용하여 JSON에서 특정 키 이름(Symbol)을 사용하도록 설정할 수 있습니다. 이는 JSON이 인식할 수 있는 적절한 이름을 제공하여 변환 시 데이터의 정확성을 높일 수 있습니다.

참고할 만한 자료

작성하신 소스 코드는 올바른 구성으로 보입니다. 이 방식으로 진행하시면 됩니다. 추가적인 궁금증이 있으시면 언제든지 질문해 주세요!

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

그래프 그리기 위한 API가 프리미엄 요금제를 구독해야만 가능하다고 합니다...ㅜㅜ

0

75

2

api 제한량 25회

0

100

2

프로젝트 전체 소스코드

0

62

2

클린아키텍처 의존관계 관련

0

216

2

mapper 생성 시...

0

168

1

강의에 있는 모든 freezed를 제거해도 되나요?

0

257

2

수업과 관련이 없지만 물을 곳이 없어...교수님께 여쭙니다..

0

359

1

뷰모델 생성자로 리스트 불러오

0

219

1

개남님 질문있씁니다! company_listing_entitiy가 왜 엔티티 인가요?

0

198

1

안녕하세요 디버그 모드 관련 여쭤볼게 있어요

0

293

1

다음 로드맵 질문

0

346

1

csv_parser라는 abstract를 작성하는 필요성이 궁금합니다

0

404

1

repository에 관하여

0

357

1

강의 예시에 대한 답변이 궁금합니다.

0

360

1

flutter 실행 관련 질문드립니다.

0

1061

1

폴더 구조에 대해 질문드립니다.

0

819

1

Repository test 관련해 질문이 있습니다.

0

262

1

stock_repository_impl.dart 에러

0

269

2

viewModel에서 context를 받는 행위 질문

0

382

1

stockApi 질문 드립니다.

0

178

1

stockApi 질문

0

260

1

라이브 템플릿 영상

0

314

1

StockApi 메서드 반환 타입에 대해

0

282

1

entity와 domain의 차이

0

4508

1