JavaScript의 Json 데이터에서 백슬래시 제거
JavaScript 또는 jQuery의 JSON 데이터에서 백슬래시 삭제
var str = "{"data":"{\n \"taskNames\" : [\n \"01 Jan\",\n \"02 Jan\",\n \"03 Jan\",\n \"04 Jan\",\n \"05 Jan\",\n \"06 Jan\",\n \"07 Jan\",\n \"08 Jan\",\n \"09 Jan\",\n \"10 Jan\",\n \"11 Jan\",\n \"12 Jan\",\n \"13 Jan\",\n \"14 Jan\",\n \"15 Jan\",\n \"16 Jan\",\n \"17 Jan\",\n \"18 Jan\",\n \"19 Jan\",\n \"20 Jan\",\n \"21 Jan\",\n \"22 Jan\",\n \"23 Jan\",\n \"24 Jan\",\n \"25 Jan\",\n \"26 Jan\",\n \"27 Jan\"]}
var finalData = str.replace("\\", "");
하지만 이건 나한테는 안 통하지.도움이 필요하신가요?
문자열이 유효하지 않지만 유효하다고 가정하면 다음을 수행해야 합니다.
var finalData = str.replace(/\\/g, "");
모든 발생을 다음으로 치환하는 경우.replace
첫 번째 파라미터는 regex여야 합니다.문자열을 지정하면 첫 번째 오카렌스만 치환되기 때문에 치환이 동작하지 않습니다.
건배.
tl;dr: 슬래시를 제거할 필요가 없고 JSON이 중첩되어 있으므로 JSON을 두 번 디코딩해야 합니다: DEMO(예에서는 JSON이 JS 문자열 리터럴 안에 있기 때문에 이중 슬래시를 사용했습니다).
당신의 실제 JSON은
{"data":"{\n \"taskNames\" : [\n \"01 Jan\",\n \"02 Jan\",\n \"03 Jan\",\n \"04 Jan\",\n \"05 Jan\",\n \"06 Jan\",\n \"07 Jan\",\n \"08 Jan\",\n \"09 Jan\",\n \"10 Jan\",\n \"11 Jan\",\n \"12 Jan\",\n \"13 Jan\",\n \"14 Jan\",\n \"15 Jan\",\n \"16 Jan\",\n \"17 Jan\",\n \"18 Jan\",\n \"19 Jan\",\n \"20 Jan\",\n \"21 Jan\",\n \"22 Jan\",\n \"23 Jan\",\n \"24 Jan\",\n \"25 Jan\",\n \"26 Jan\",\n \"27 Jan\"]}"}
즉, 열쇠 하나로 최상위 수준의 물체를 가지고 있습니다.data
이 키의 값은 JSON 자체를 포함하는 문자열입니다.이는 보통 서버 측 코드가 JSON을 올바르게 생성하지 않았기 때문입니다.그 때문에, 그 유저에게\"
스트링 안에 있어요.이를 통해 파서는 다음을 알 수 있습니다."
문자 그대로 취급하고 문자열을 종료하지 않는 것입니다.
따라서 데이터를 이중 인코딩하지 않도록 서버 측 코드를 수정하거나 JSON을 두 번 디코딩해야 합니다.
var data = JSON.parse(JSON.parse(json).data));
이거 먹어봐
var finalData = str.replace(/\\/g, '');
JSON.parse(데이터)를 실행해 보면 동작합니다.대부분의 경우 Sitecore 또는 백엔드에서 JSON이 생성되면 모든 슬래시와 함께 제공됩니다.
응답으로 반환하기 전에 JSON을 한 번 역직렬화해야 합니다.아래 코드를 참조하십시오.이것으로 충분합니다.
JavaScriptSerializer jss = new JavaScriptSerializer();
Object finalData = jss.DeserializeObject(str);
리액트 네이티브에서는 이게 효과가 있었어요
name = "hi \n\ruser"
name.replace( /[\r\n]+/gm, ""); // hi user
몇 시간 동안 비틀거리더니, 이 일이 잘 풀렸어요.백슬래시가 있는 json 문자열을 javascript 객체로 변환할 수 있습니다.
function strToObj(str: string) {
var obj = {};
if (str && typeof str === 'string') {
var objStr = str.match(/\{(.)+\}/g);
eval('obj =' + objStr);
}
return obj;
}
JSON.parse(JSON.stringify(req.body.json))
날 위해 일을 해줬어
언급URL : https://stackoverflow.com/questions/21036626/remove-backslashes-from-json-data-in-javascript
'programing' 카테고리의 다른 글
서비스 데이터 변경 시 범위 값 업데이트 (0) | 2023.03.13 |
---|---|
Type Script:중복 식별자 'IteratorResult' (0) | 2023.03.13 |
AngularJS $http, CORS 및 http 인증 (0) | 2023.03.08 |
angular.js에서 HTML5 푸시 스테이트 사용 (0) | 2023.03.08 |
node.js에서 데이터베이스를 조롱하고 있습니까? (0) | 2023.03.08 |