JSON을 JS 객체로 파싱하려고하지만 값에 "\"문자와 4자를 항상 포함하는 하나의 속성에 문제가 있습니다. 예 : 나는 그것을 분석하면 내가 얻을JSON.parse() 메서드에서 ""구문 분석을 피하는 방법
"key": "Z13g\u003d"
:
"key": "Z13g="
이 문제를 해결 할 수있는 쉬운 방법이 있나요 문자열은 그런 일을 본다?
JSON을 JS 객체로 파싱하려고하지만 값에 "\"문자와 4자를 항상 포함하는 하나의 속성에 문제가 있습니다. 예 : 나는 그것을 분석하면 내가 얻을JSON.parse() 메서드에서 ""구문 분석을 피하는 방법
"key": "Z13g\u003d"
:
"key": "Z13g="
이 문제를 해결 할 수있는 쉬운 방법이 있나요 문자열은 그런 일을 본다?
JavaScript에서 "\ u003d"와 같은 문자열이 있으면 구문 분석 된 문자열 "="과 구별 할 수 없습니다. String.replace
함수도 문자열에 \
문자를 찾지 않습니다.
그러나 백 슬래시 문자가 포함 된 문자열을 실제로 나타내려면 다른 백 슬래시로 이스케이프 처리해야합니다.
"\u003d"
은 문자열 값 "="
을 나타내며 "\\u003d"
은 "\u003d"
문자열 값을 나타냅니다.
그러나 JSON.parse
을 호출하면 상황이 더욱 복잡해집니다. 문자열 값을 다시 파싱하므로 "\\u003d"
이 "="
으로 변환됩니다.
이 문제를 해결하려면 백 슬래시를 두 번 이스케이프 처리해야하므로 문자열 값은 "\\\\u003d"
이됩니다. 구문 분석기는 "="
대신 "\u003d"
으로 변환합니다.
console.log(JSON.parse("\"\u003d\"")); // "\u003d" -> "="
console.log(JSON.parse("\"\\u003d\"")); // "\\u003d" -> "="
console.log(JSON.parse("\"\\\\u003d\"")); // "\\\\u003d" -> "\u003d"
은 왜 그 첫번째 장소에있는 문제? '\ u003d'는 JSON 문자열에'= '를 표현할 수있는 방법입니다. 아마도 JSON을 처음 만들었을 때 문제가 슬래시를 피하지 못했을 것입니다. – Quentin
'\ u003d'는 JSON에서'= '문자를 나타내는 한 방법입니다. 파서가 제대로 작동하고 있습니다. – cdhowie
@Quentin 첫 번째 예제는 원래 문자열이 어떻게 보이고 두 번째로 javascript 객체로 파싱 한 후 어떻게 보이는지를 보여줍니다. –