티스토리 뷰

Web

escape 문자 json ↔ string

조용한스택 2023. 1. 3. 17:57

😱 문제

  • db에서 테스트용\\n메인배너 를 읽어서 API response 로 보내면 \\n 가 \\\\n 로 변경되어 앱에서 \\n 문자 그대로 보여짐

🤔 원인

자바 로직 내에서는 계속 \\n 로 되어 있었는데, controller 메서드에서 값을 반환하고 response로 받아보면 \\\\n 로 확인되었다

  • string 을 byte 로 변환하여 확인해보니 ‘\n’ 인 10번 아스키가 아니라, ‘\’ 와 ‘n’가 붙어 있는 문자열이었다!
  • JSON으로 변환 중 \\가 별도의 문자로 인식되어 한 번 더 인코딩되어 발생한 문제였음

해결

s.replaceAll("\\\\n", System.lineSeparator());

// 다른 방법. StringEscapeUtil 사용
StringEscapeUtil.unescapeJava(s);

참고

https://stackoverflow.com/questions/24065688/java-spring-web-service-rest-producing-double-backslash-at-json

https://www.geeksforgeeks.org/how-to-handle-newlines-in-json/

https://stackoverflow.com/questions/42572684/replace-n-by-in-java

 

'Web' 카테고리의 다른 글

J2EE 스펙 정리  (0) 2024.02.26
웹에서의 문자  (0) 2023.06.20
REST란 무엇인가?  (0) 2021.12.22
HTTP Method 7가지  (0) 2021.12.22
웹 소켓  (0) 2021.11.11
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
글 보관함