241125 TIL

나고수·2024년 11월 25일
0

2024 TIL

목록 보기
85/94
post-thumbnail

① 배운 것

Flutter json_serializable: 여러 JSON 키를 하나의 필드로 매핑하는 방법


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)

③ 개선을 위한 방법

profile
되고싶다

0개의 댓글