inflearn logo
강의

Khóa học

Chia sẻ kiến thức

Flutter Trung cấp Phần 2 - Phát triển ứng dụng thực tế - Ứng dụng cổ phiếu Mỹ (với Clean Architecture)

Phân tích cú pháp JSON thông tin công ty

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

167

mhlee

15 câu hỏi đã được viết

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

Câu trả lời 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

76

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

262

1

라이브 템플릿 영상

0

316

1

StockApi 메서드 반환 타입에 대해

0

283

1

entity와 domain의 차이

0

4512

1