programing

문자열화할 때마다 JSON.stringify가 큰따옴표를 이스케이프합니다.

muds 2023. 3. 27. 21:41
반응형

문자열화할 때마다 JSON.stringify가 큰따옴표를 이스케이프합니다.

웹 서비스에서 오브젝트로 검색된 JSON 오브젝트를 javascript에 저장하고 있습니다.많은 장소에서 이것은 문자열화되어(이 obj는 몇 가지 플러그인을 통과하여 스트레이징, 저장 및 검색), 여러 개의 슬래시를 추가합니다.어떻게 하면 피할 수 있을까요?

http://jsfiddle.net/MJDYv/2/

var obj = {"a":"b", "c":["1", "2", "3"]};
var s = "";
console.log(obj);
s = JSON.stringify(obj);
alert(s); // Proper String
s = JSON.stringify(s);
alert(s); // Extra slash added, Quotes are escaped
s = JSON.stringify(s);
alert(s); // Again quotes escaped or slash escaped but one more slash gets added
var obj2 = JSON.parse(s);
console.log(obj2); // Still a String with one less slash, not a JSON object !

따라서 이 여러 문자열을 구문 분석할 때 다시 문자열로 끝납니다.그리고 물체처럼 접근하려고 하면 충돌합니다.

슬래시를 제거하려고 했는데replace(/\\/g,"")마지막으로 이렇게 하겠습니다.""{"a":"b","c":["1","2","3"]}""

무슨 일이 일어날 줄 알았어?

JSON.stringify는 이미 JSON으로 변환된 데이터로 호출된 경우 "ID" 함수와 같이 동작하지 않습니다.따옴표, 백슬래시 등을 피할 수 있도록 설계되어 있습니다.

전화하셔야 합니다.JSON.parse()당신이 부른 횟수만큼 정확히JSON.stringify()당신이 넣은 것과 같은 물건을 돌려받을 수 있습니다.

해라

JSON.stringify(s).replace(/\\"/g, '"')

JSON으로 변환하고 싶은 데이터를 한 번만 호출하면 이를 방지할 수 있습니다.

이것을 시험해 보세요.

s = {"a":"b", "c":["1", "2", "3"]}
JSON.stringify(JSON.stringify(s))

로서 출력합니다.

'"{\"a\":\"b\",\"c\":[\"1\",\"2\",\"3\"]}"'

언급URL : https://stackoverflow.com/questions/16507858/json-stringify-escapes-double-quotes-every-time-when-stringified

반응형