① 배운 것
class SomeDataClass with _$SomeDataClass {
factory SomeDataClass({
(name: 'image') required String image,
}) = _SomeDataClass;
factory SomeDataClass.fromJson(Map<String, dynamic> json) =>
_$SomeDataClassFromJson(json);
}
A api에서는 'image'라는 키값으로 이미지링크가 내려왔는데
B api에서는 'img'라는 키값으로 이미지링크가 내려온다고 가정하자.
물론 이런경우에는 백앤드에 image,img 둘 중 하나로 통일해달라고 요청하는게 제일 좋을 것 같긴하지만, 서버에서 수정이 불가하거나 서버에서는 다른 필드로 관리하지만 프론트에는 똑같은 필드로 관리되는 경우에는 여러개의 Key값을 하나의 필드로 매칭해야한다.
@JsonKey 속성 중 readValue를 활용하여 해결
class SomeDataClass with _$SomeDataClass {
factory SomeDataClass({
(
name: 'image',
readValue: _readImageValue,
) required String image,
}) = _SomeDataClass;
factory SomeDataClass.fromJson(Map<String, dynamic> json) =>
_$SomeDataClassFromJson(json);
}
Object? _readImageValue(Map<dynamic, dynamic> json, String key) {
return json['image'] ?? json['img'];
}
② 회고 (restropective)
③ 개선을 위한 방법