programing

JavaScript의 Json 데이터에서 백슬래시 제거

telebox 2023. 3. 13. 20:20
반응형

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

반응형