개발자
api통신할 때 아래와 같이 “”안에 string으로 JSON문자열을 그대로 넣어서 보내고 있는데 { check_list: JSON.stringify(check_list.value) } 키값 앞뒤로 /“ 이게 왜 붙는걸까요? 없애려면 어떻게 해야하나요? -현재 { “check_list”: “[{\“check_id\“:80,\“file_id\“:24076,\“checked\“:true}, {\“check_id\“:84,\“file_id\“:24077,\“checked\“:true}, {\“check_id\“:81,\“file_id\“:24079,\“checked\“:true}]“ } -원하는 값 { “check_list”: “[{check_id:80,file_id:24076,checked:true}, {check_id:84,file_id:24077,checked:true}, {check_id:81,file_id:24079,checked:true}]“ }
답변 2
백슬래시(\)는 이스케이프 문자입니다! 이스케이프 문자란, 문자열 안에서 ‘다음에 오는 문자는 특수문자에용’ 역할을 하는 문자입니다. 문자열을 다루다 보면 가장 흔히 볼 수 있는 이스케이프가 바로 \“ 인데요, 쉽게 생각해서 쌍따옴표에 이스케이프가 붙는 이유는, 프로그래밍 언어가 문자열을 표시할 때, 쌍따옴표(혹은 따옴표)가 붙기 때문입니다. 만약 이스케이프가 없다면, 프로그래밍 언어를 해석하면서 쌍따옴표가 나올 때마다, 이게 문자열 안의 따옴표인지, 문자열 값을 나타내기 위한 쌍따옴표인지 알 수가 없을 것입니다. 또한, JSON 표기 문법 상, 모든 키 값에는 쌍따옴표를 붙입니다. 즉, 객체를 stringify 하는 과정에서 키에 해당하는 값에 쌍따옴표가 붙고, 이것을 출력하는 과정에서 이스케이프 문자가 함께 출력 된 것입니다. 만약 쌍따옴표를 삭제하고 싶으시다면, 정규식을 사용하시면 될 것 같습니다!
1JSON.stringify(check_list.value).replace(/\"([^\"]+)\"\:/g, (_, key) => `${key}:`);
지금 가입하면 모든 질문의 답변을 볼 수 있어요!
현직자들의 명쾌한 답변을 얻을 수 있어요.
이미 회원이신가요?
지금 가입하면 모든 질문의 답변을 볼 수 있어요!