마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

레트로핏 통신 시 특정 값이 null로 도착하는 경우

0 추천

안녕하세요 선생님들.. 사소한 의견이라도 좋으니 댓글 부탁드려요.. ㅠ_ㅠ

⬇︎소스코드

 

⬇︎Run

 

첫줄에 보이는 response는 잘 오는 것 같습니다..

log와 print로 int code 와 boolean isSuccess는 잘 보여주는데 "result" 만 null이 되어 돌아옵니다...ㅠㅠ

혹시 짐작가는 원인이 있으신지 질문 드립니다.. 감사합니다

송솜 (150 포인트) 님이 2022년 7월 4일 질문

1개의 답변

0 추천
 
채택된 답변
Result가 null이 아니라 빈 object이 있는 겁니다. 서버에서 어떤 데이터가 나갔는지 체크해 보세요. 서버에서 받은 대로 응답을 한거면 서버의 문제일 거구요, 그렇지 않다면 gson 클래스가 잘못 디자인 되었을 가능성이 있습니다.
응답받아야할 JSON데이터와 님이 가지고 있는 응답 클래스가 맞게 디자인 된거지 비교해 보세요.
그리고 응답용 클래스를 만들 때는 안드로이드 스튜디오 플러그인을 이용해서 샘플 JSON으로부터 클래스를 자동 생성하는게 편리합니다.
spark (227,830 포인트) 님이 2022년 7월 4일 답변
송솜님이 2022년 7월 5일 채택됨
왜 http status code가 1000죠?
표준 http통신이라면 200 이어야 정상인데 말이죠.
왜 1000이 리턴되는지부터 찾으셔야할 듯하네여.
아 그거는 서버쪽에서 그냥 설정해둔 값이고 http 통신코드는 200으로 잘 뜹니다! 답변을 너무 늦게 확인했네요 지금은 해결되었습니다!
서버에서 설정한 result가 json 안에 string이 있는 구조였는데 그냥 result를 string 형태로 바꾸었더니 잘 받아오더라구요!
json 안에 json이 원래 안되는건지..? 아니면 뭔가 다른 문제가 있었는지는 모르겠지만 일단 해결은 되었다는..^^ 답변 감사합니다!
잘됐네요.
string필드 안에 json string형태의 필드가 존재하면 이 필드는 바로 파싱이 되지 않고 string으로 읽어들인 다음 다시 파싱하거나, Custom deseiralizer를 작성하거나 해서 해결해야 합니다.
...