인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

Jung Jae Yoo님의 프로필 이미지
Jung Jae Yoo

작성한 질문수

[Bloc 응용] 실전 앱 만들기 (책 리뷰 앱) : SNS 로그인, Firebase 적용, Bloc 상태 관리, GoRouter

네이버 어플리케이션 등록 및 도서 API 사용하여 데이터 확인하기

Json 데이터가 불완전할때는 어떻게 해결을 하시나요?

해결된 질문

작성

·

297

0

선생님 실무에서 받는 JSON 데이터가 가끔은 필요한 포맷으로 딱 떨어지지 않을때가 있는데 이럴때 실무에서는 어떻게 해결을 하시나요? 이번에 북 리뷰에도 어떤 책들의 저자들은(길거나, 영문일때 등) ^ 이런 표시가 있어서 사용 환경을 약간 저해하는 듯 싶어서 해결을 하고 싶은데 어떻게 해야할지 감을 못잡겠네요 ㅠ

Screenshot 2023-08-08 at 8.54.02 PM.png

답변 1

0

개발하는남자님의 프로필 이미지
개발하는남자
지식공유자

안녕하세요

Json 데이터가 사용자의 입력에 따라 다양하게 입력될 때가 많이 있습니다.

실무에서는 보통 사용자가 입력하는 입력폼에 허용되는 입력을 제약을 둘경우가 있습니다.

영문만 가능하도록 하거나 한글 영문 숫자 그리고 몇몇 특수 문자만 가능하도록 설정할 수 있습니다.

그 부분은 TextField 에 inputFormatters를 이용하여 처리가 가능합니다.

TextField(
    controller: controller.nicknameController,
    inputFormatters: <TextInputFormatter>[
        FilteringTextInputFormatter.allow(RegExp(r'[ㄱ-ㅎ|ㅏ-ㅣ|가-힣|ᆞ|ᆢ]')),
        FilteringTextInputFormatter.allow(RegExp(r'[a-z|A-Z|0-9|ㄱ-ㅎ|ㅏ-ㅣ|가-힣|ᆞ|ᆢ]'))
    ],
),

이렇게 입력폼에 제약을 두는 방식으로 어느정도 방어를 할 수 있습니다.

그리고 추가적으로 이미 다양한 데이터가 쌓여있는 상태라고 가정한다면 보여주는 화면에서 특정 문자를 치환해주는 방식으로 대응을 할 수 있습니다.

위에 캡쳐해주신 데이터를 바탕으로 특수기호 ^ 를 빼주거나 띄어써주는 걸로 바꿔준다면

  var text = 'Grady^Elieen';
  var newText= text.replaceAll(RegExp(r'\^'),' ');
  print(newText);

위와 같이 변경을 해줄 수 있습니다.

또한 Text길이가 긴경우는 Text 옵션에 overflow를 설정해서 ... 처리를 해주거나 할 수 있겠습니다.

Text(
      '텍스트가 긴 경우 maxLines 옵션을 1줄로 세팅하고 overflow를 세팅합니다. ',
      maxLines: 1,
      overflow: TextOverflow.ellipsis,
    );

 

Jung Jae Yoo님의 프로필 이미지
Jung Jae Yoo
질문자

답변 감사합니다!! 저 데이터의 경우 네이버API에서 날라올때 이미 ^ 이런 형태가 붙어서 나오는 경우인데 이것도 해결 방법이 같다고 볼 수 있나요??

개발하는남자님의 프로필 이미지
개발하는남자
지식공유자

네네 위 제가 제공드린 소스를 사용하시면 해당 문제를 해결 할 수 있습니다.

감사합니다 :)

Jung Jae Yoo님의 프로필 이미지
Jung Jae Yoo

작성한 질문수

질문하기