스팀 앱 개발기 #169 - 개발 완료: 포스트 리스트 로딩시 발생하는 오류 해결
개발 완료: 포스트 리스트 로딩시 발생하는 오류 해결
No. 169
2026. 09. 25 (금) | Written by @dorian-mobileapp
포스트 리스트를 로딩하는데 오류가 발생했습니다. 해당 화면, 뷰모델을 수정하지 않았는데도 그랬죠. 이를 수정하는라 시간을 보냈습니다.
구현 내용
1. JSONMetadataDTO.kt — 버그의 원인 제거
필드 2개 삭제.
data class JSONMetadataDTO(
- val links: List<String>?,
val image: List<String>?,
- val users: List<String>?,
val tags: Any?, // String or List<String>
steemitkorea/0.1로 작성된 글이 links/users를 빈 배열이 아니라 빈 객체 {}로 내보내, Gson이 Expected BEGIN_ARRAY but was BEGIN_OBJECT로 응답 전체의 파싱을 포기하던 것이 원인이었습니다.
두 필드 모두 전 모듈에서 사용처가 0건이고, Gson은 선언하지 않은 JSON 필드를 무시하므로 삭제로 해결했습니다. 클래스 위에 판단 근거(존재율 26%/19%, 본문에 실제로 있어도 누락률 78%/56%)를 주석으로 남겼습니다.
2. PostItemDTO.kt — 필드명 오타 수정
- val is_payout: Boolean?,
+ val is_paidout: Boolean?,
선언부와 toPost()의 사용부, 두 곳입니다. 실제 API 응답 키가 is_paidout이라 기존에는 항상 null로 읽혀 정산 완료 여부가 늘 false 였습니다. 예외를 던지지 않고 조용히 틀리던 별개 버그입니다.
3. TestData.kt — 앱 다양성 픽스처 추가
accountsByPostingApp 추가. 14개 작성 앱을 각각 대표하는 (계정, 앱) 쌍입니다.
icetea/steemit-0.2, labaz/(app 없음), sean2masaaki/SteemX, daily-public/steempro,
marts/steem-mobile, web2.support/curator-perfect-steem, maikuraki/steemcoinpan,
bokhtiar1444/speem, cr7pt0/beem, uco.btc-d/upvu, statsexpert/stats,
tworld/total-steemit, xelenium/steem-0.7, jeehun/steemitkorea
기존 TestData는 본인 계정 3개뿐이라 앱별 차이를 구조적으로 볼 수 없었습니다. 왜 이 목록이 필요한지 KDoc으로 설명을 붙였습니다. 파일 끝 개행 누락도 함께 수정됐습니다.
4. SteemRepositoryImplTest.kt — 회귀 방지 테스트 추가
readPosts_acrossPostingApps 신설. 설계상 세 가지를 반영했습니다.
- 첫 실패에서 멈추지 않고 전부 모아 보고합니다 — 한 번 돌려 어느 앱들이 깨지는지 다 봅니다
- 내용이 아니라 파싱 성공 여부만 단언합니다 — 제3자 계정이 활동을 멈춰도 깨지지 않습니다
runTest(timeout = 180.seconds)— 14개 순차 네트워크 호출이 기본 10초 타임아웃을 넘깁니다
수정을 되돌리면 이 메시지로 실패하는 것을 확인했습니다.
jeehun (steemitkorea/0.1): JsonSyntaxException: Expected BEGIN_ARRAY but was
BEGIN_OBJECT at ... path $.result[3].json_metadata.links
GitHub Commit
보다 자세한 코드 또는 변경 내용은 아래 commit을 참고하세요.
지난 스팀 앱 개발기
- #168 - 작성 완료: iCloud 충돌 사본 차단
- #167 - 작성 완료: 문서 추가 정리
- #166 - 작성 완료: 문서 추가 정리
- #165 - 개발 완료: 지갑 화면에 보상 탭 도입 (저자 및 큐레이션 보상)
- #164 - 개발 완료: 저자/큐레이션 보상 내역 API 연동 (SDS API)
- #163 - 개발 완료: 지갑 화면에 탭 도입 (잔액, 보낸 목록, 받은 목록)
- #162 - 개발 완료: 패키지 관련 오류 수정
- #161 - 개발 완료: 피임대 중인 스팀 파워 목록 화면 구현
- #160 - 개발 완료: 스팀 파워 임대 목록 화면 구현
- #159 - 개발 완료: 포스트의 댓글 정렬 오류 수정
- #158 - 개발 완료: 추가 개선 6, 7, 8, 9
- #157 - 개발 완료: 추가 개선 4, 5
- #156 - 개발 완료: 추가 개선 1, 2, 3
- #155 - 개발 계획: 추가 개선 적용
- #154 - 개발 완료: 테스트 코드 개선
- #153 - 개발 완료: Architecture 개선 작업
- #152 - 개발 완료: 레거시 의존성 제거 작업 요약
- #151 - 개발 완료: Compose 마이그레이션 연장선
- #1 ~ #150
Layout provided by Steemit Enhancer hommage by ayogom
안녕하세요 스팀잇 코리아팀입니다.
스팀잇 코리아팀이에서 보다 나은 스팀잇 생활을 위해서, 자체 콘덴서 사이트를 제작 하였습니다. 기존 steemit 대비 아쉬웠던 부분들을 반영하여 우리 한국 사용자들이 보다 편리한 스팀잇 활동을 하실 수 있도록 지원하고 있습니다. steemitkorea 사이트에 방문하셔서 살펴보시고 마음에 드시면 해당 사이트에서 활동을 부탁드려봅니다. 자동보팅, 예약글쓰기, 카테고리(전체/개인) 기능, 번역등 여러가지 편리한 기능을 많이 제공해드리고 있습니다.
https://steemitkorea.com 방문 부탁드립니다.
9월 30일까지 사용하시는 분들을 위해 steemitkorea 개척자 뱃지를 제공해 드리고 있으니, 많은 참여를 바랍니다. 뱃지 시스템은 스팀잇코리아 사이트 내에서 여러가지 활동 혹은 밋업등을 통해 받아볼 수 있습니다.
안녕하세요.
SteemitKorea팀에서 제공하는 'steemit-enhancer'를 사용해 주셔서 감사합니다. 개선 사항이 있으면 언제나 저에게 연락을 주시면 되고, 관심이 있으신 분들은 https://cafe.naver.com/steemitkorea/425 에서 받아보실 수 있습니다. 사용시 @응원해 가 포함이 되며, 악용시에는 모든 서비스에서 제외될 수 있음을 알려드립니다.
새로운 콘덴서(steemit 사이트)를 소개합니다.
https://steemitkorea.com 에서 보다 편리한 스팀잇 활동 부탁드립니다