Jackson 직렬화 시 > 기호가 깨질 때 원인과 해결법

문제 상황
API 응답에서 특수문자가 Unicode escape 형태로 내려오는 현상이 있었다.
예를 들어, > 기호가 \u003E로 바뀌는 경우가 해당된다.
디버깅 시에는 >로 보이지만, 실제 응답에서는 인코딩된 문자처럼 보이는 이유와 해결방법을 정리해보았습니다.
예시
public class Product { @JsonProperty("description") private String description = "1 > 0"; }
- 디버깅 출력 : 1 > 0 (그대로)
- JSON 응답 : 1 \u003E 0
원인 분석
- 디버깅 : 단순 문자열 표시라 > 그대로 보임
- JSON 직렬화 : Jackson 등 직렬화 도구에서 보안 목적으로 이스케이프 처리
- > 에서 \u003E 로 보임 : <, >, & 등은 XSS 방지 대상 문자임
- Serializable : 직렬화 관련은 있지만 JSON 인코딩과는 무관
해결방법
방법 1: Unicode escape 끄기 (Jackson)
ObjectMapper mapper = new ObjectMapper(); mapper.configure(JsonGenerator.Feature.ESCAPE_NON_ASCII, false);
방법 2: HTML escape 커스터마이징 (보안 유지하면서 처리)
mapper.getFactory().setCharacterEscapes(new HtmlCharacterEscapes());
'IT' 카테고리의 다른 글
Dynamic Programming (DP) : 작은 문제의 답을 조합해 큰 문제를 푼다. (0) | 2025.04.13 |
---|---|
공통 쿼리 재사용을 고려한 랜덤 추출 쿼리 작성 방법 (Oracle + MyBatis) (0) | 2025.03.23 |
웹 브라우저 요청 흐름 (0) | 2025.01.06 |
RxParallelRunner 소개 (0) | 2024.12.02 |
Internal, external gateway 에 대해서 (1) | 2024.11.25 |
댓글
이 글 공유하기
다른 글
-
Dynamic Programming (DP) : 작은 문제의 답을 조합해 큰 문제를 푼다.
Dynamic Programming (DP) : 작은 문제의 답을 조합해 큰 문제를 푼다.
2025.04.13 -
공통 쿼리 재사용을 고려한 랜덤 추출 쿼리 작성 방법 (Oracle + MyBatis)
공통 쿼리 재사용을 고려한 랜덤 추출 쿼리 작성 방법 (Oracle + MyBatis)
2025.03.23 -
웹 브라우저 요청 흐름
웹 브라우저 요청 흐름
2025.01.06 -
RxParallelRunner 소개
RxParallelRunner 소개
2024.12.02
댓글을 사용할 수 없습니다.