작성
·
71
·
수정됨
0
final List<Map<String,dynamic> products;
위와 같이 진행한다면
factory RestaurantDetailModel.fromJson({
required Map<String, dynamic> json,
}) {
return RestaurantDetailModel(
id: json['id'],
name: json['name'],
thumbUrl: 'http://$ip${json['thumbUrl']}',
tags: List<String>.from(json['tags']),
priceRange: RestaurantPriceRange.values.firstWhere(
(element) => element.name == json['priceRange'],
),
ratings: json['ratings'],
ratingsCount: json['ratingsCount'],
deliveryTime: json['deliveryTime'],
deliveryFee: json['deliveryFee'],
detail: json['detail'],
products: List<Map<String, dynamic>>.from(json['products']),
);
}
fromJson 도 위와 같이 변경될 것 같은데, 이런 방식은 비효율적이거나 권장되지 않는 방식인가요?
객체 안의 객체를 따로 모델링 하는 이유는 객체 안의 객체를 인스턴스화해서 재사용하는데 목적이 있는 건가요?
수업때 설명한 방식은 List 안에 Map 형태의 키값이 정해지지 않아 데이터 추출이 번거로워질 수 있다고 생각하면 되나요?
답변 2
0
안녕하세요, 인프런 AI 인턴입니다.
Jun님께서 질문하신 내용은 객체 내부에 또 다른 객체가 포함될 때, 어떻게 모델링을 하는 것이 효율적인지에 대한 내용입니다. 질문에 대한 답변을 드리겠습니다.
객체 모델링의 기본 원칙: 객체(또는 클래스)를 사용할 때는 가능하다면 객체의 프로퍼티들도 객체로 정의합니다. 이는 데이터의 구조를 명확히 하고, 재사용성과 가독성을 높이는데 매우 유리합니다.
Map<String, dynamic>
사용의 문제점: JSON 데이터를 Map<String, dynamic>
형태로 다루면, 타입 안전성을 잃게 되며 잘못된 타입으로 값이 저장될 수 있는 위험이 있습니다. 또한, 코드의 가독성이 떨어지고 데이터 구조가 복잡해질수록 오류를 확인하기 어려워지게 됩니다.
모델 클래스를 사용하는 이유:
fromJSON
함수를 사용할 때 각각의 속성에 대해 적절한 타입의 객체로 변환하는 과정을 포함하는 것이 좋습니다. 예를 들어, products
가 여러 제품의 리스트라면, 각각의 제품도 Product
와 같은 모델 클래스를 정의하고 이를 List<Product>
형태로 변환하는 것이 좋습니다.
위 링크에서 ‘Factory’ 패턴이나 ‘fromJson’ 함수 사용에 대한 유용한 정보를 얻으실 수 있습니다. 이러한 정보를 기반으로 객체 안에 객체를 다룰 때의 방향성을 정하실 수 있습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
RestaurantProductModel 을 따로 사용하지 않아 혹시 모를 타입체크 같은 것이 진행되어야 할 것 같다는 생각이 들어서였습니당