728x90
반응형
문제
외부 서버에서 응답을 받아왔는데, 맨 끝에 }로 json이 닫히는 부분이 제대로 오지 않아서 parsing이 일부 실패하여 오류가 나고 있었다.
원인
Ro 객체로 응답을 지정하고 있었는데, body의 마지막 데이터들이 results가 아닌 code, name, description 속성값들이 모두 null로 오고 있었다. json에는 null이 없으므로 null이 맨 마지막에 오면 역직렬화 시에 위와 같이 불완전한 parsing이 일어날 수 있다.
해결책
1. 응답하는 쪽에서 null 데이터가 있는 경우 "null"로 String 처리해주는 것이 좋다.
2. Ro 객체에 아래처럼 @JsonInclude(JsonInclude.Include.NON_NULL)을 추가해주면 null 데이터는 역직렬화시에 무시되어 정상적으로 파싱이 된다.
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@Schema(description = "BizMessage API 응답 객체")
@JsonInclude(JsonInclude.Include.NON_NULL)
public class ApiPlexBizMessageRo extends BaseRoAbstract {
@Schema(
description = "메시지 수신 데이터 리스트 (정상 요청 또는 개별 실패 응답의 결과)",
example = "[{\"code\": \"C100\", \"msg_key\": \"user_key_1\", \"desc\": \"success\"}]")
private List<ApiPlexResultRo> results;
@Schema(
description = "에러 응답 코드 (잘못된 요청의 경우만 존재)",
allowableValues = {
"C100", "C400_1", "C400_2", "C400_3", "C401_1", "C401_2", "C401_3", "C404_1", "C500_1",
"G110", "G140", "G141", "G142", "G150", "G160"
},
example = "코드별 상세 내용 확인: https://developer.apiplex.net/ko/service/biz-message/sms")
private String code;
@Schema(
description = "에러 이름 (잘못된 요청의 경우만 존재)",
example = "authorization fail - authorization field error")
private String name;
@Schema(
description = "에러 상세 설명 (잘못된 요청의 경우만 존재)",
example = "there is no authorization key or value in http header")
private String description;
}
728x90
반응형
'Programming-[Backend] > SpringBoot' 카테고리의 다른 글
Swagger UI(feat. keycloak Open API) (0) | 2025.01.04 |
---|---|
CircuitBreaker: Resilience4j - 지연 및 실패 전파 방지하기 (3) | 2024.12.15 |
스프링 데이터, 파일 동시에 전달 시 Swagger Schema 표시 (0) | 2024.12.15 |
testcontainer 자바 도커 컨테이너 테스트: @ExtendWith, @DirtiesContext (1) | 2024.06.02 |
Mapstruct 기능 기록 uses, expression, @Named, qualifiedByName (0) | 2024.05.26 |