스팀 앱 개발기 #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을 참고하세요.


지난 스팀 앱 개발기


Layout provided by Steemit Enhancer hommage by ayogom
Sort:  

image.png
안녕하세요 스팀잇 코리아팀입니다.
스팀잇 코리아팀이에서 보다 나은 스팀잇 생활을 위해서, 자체 콘덴서 사이트를 제작 하였습니다. 기존 steemit 대비 아쉬웠던 부분들을 반영하여 우리 한국 사용자들이 보다 편리한 스팀잇 활동을 하실 수 있도록 지원하고 있습니다. steemitkorea 사이트에 방문하셔서 살펴보시고 마음에 드시면 해당 사이트에서 활동을 부탁드려봅니다. 자동보팅, 예약글쓰기, 카테고리(전체/개인) 기능, 번역등 여러가지 편리한 기능을 많이 제공해드리고 있습니다.
https://steemitkorea.com 방문 부탁드립니다.
9월 30일까지 사용하시는 분들을 위해 steemitkorea 개척자 뱃지를 제공해 드리고 있으니, 많은 참여를 바랍니다. 뱃지 시스템은 스팀잇코리아 사이트 내에서 여러가지 활동 혹은 밋업등을 통해 받아볼 수 있습니다.

안녕하세요.
SteemitKorea팀에서 제공하는 'steemit-enhancer'를 사용해 주셔서 감사합니다. 개선 사항이 있으면 언제나 저에게 연락을 주시면 되고, 관심이 있으신 분들은 https://cafe.naver.com/steemitkorea/425 에서 받아보실 수 있습니다. 사용시 @응원해 가 포함이 되며, 악용시에는 모든 서비스에서 제외될 수 있음을 알려드립니다.

새로운 콘덴서(steemit 사이트)를 소개합니다.
https://steemitkorea.com 에서 보다 편리한 스팀잇 활동 부탁드립니다