웹 프론트엔드 JS 튜토리얼 JavaScript_Basics의 JSON.parse에 대한 이스케이프 문자()의 영향 개요

JavaScript_Basics의 JSON.parse에 대한 이스케이프 문자()의 영향 개요

May 16, 2016 pm 05:28 PM
json parse 이스케이프 문자

ECMA262 제5판의 설명에 따르면 JSON은 문자열화 및 구문 분석 메소드를 제공하는 내장 객체입니다. 전자는 js 객체를 json 표준을 따르는 문자열로 변환하는 데 사용되고 후자는 json을 따르는 문자열을 변환하는 데 사용됩니다. 표준을 js 객체로 변환합니다. json 표준 참조 json.org . (실제로 eval을 사용하면 json 표준을 준수하는 문자열을 js 객체로 변환할 수 있지만 eval은 상대적으로 성능이 좋지 않고 보안상의 위험도 있습니다(json 문자열에 있는 코드를 실행하게 됩니다). 이 글에서는 JSON만 작성합니다. )
이 글은 변환 의미 문자가 JSON.parse 메소드에 미치는 영향에 대해 작성합니다.

일반적으로 JSON.parse의 매개변수에 전송 문자가 포함된 경우 두 가지 이스케이프 문제가 발생합니다. 실제로 첫 번째는 문자열 자체의 이스케이프이고 두 번째는 문자열로의 실제 변환입니다. js 객체의 이스케이프.

예는 다음과 같습니다.
예 1: '{"a":"b","b":"\\"}' 문자열을 JSON.parse에 전달하고, 먼저 파서가 추출합니다. 작은따옴표 문자열을 묶을 때 첫 번째 문자열은 이스케이프되고, 두 번째 문자열은 이스케이프되고, 네 번째 문자열은 세 번째 문자열이 이스케이프되는 것으로 간주됩니다. 즉, 실제 출력 문자열은 {"a":"입니다. b","b":"\"} (console.log('{"a":"b","b":"\\"}')를 통해 확인할 수 있음) 또 다른 이스케이프가 있습니다. 공식적으로 실제 출력 문자인 js 객체로 변환될 때 첫 번째 객체는 두 번째 객체를 이스케이프합니다(현재는 두 개만 있음). 따라서 console.log(JSON.parse('{"a":"b","b":"\\"}') ) 출력 결과는 Object {a: "b", b: ""}, 또한 즉, 실제 표시되는 데이터는 1개입니다(실제로는 하나의 데이터가 출력될 수 있으며, 이 전에 다른 데이터가 있음을 나타냄).
예 2:
var obj = {
a : "b",
b : "\",
c : {
b : "\",
a : {
b : "\"
}
}
}
var json_str = JSON.stringify(obj)
console.log( JSON.stringify(obj) ) ;
console.dir(JSON.parse(json_str));
console.dir(JSON.parse('{"a":"b","b":"\\","c": {"b":"\\","a":{"b":"\\"}}}')); 출력 결과는 아래와 같습니다
pic
이스케이프 규칙에 따르면, 실제 출력은 다음과 같습니다. 이 출력 앞에 하나가 있어야 합니다. 따라서 위 첫 번째 줄의 출력은 '{"a":"b","b":"\\","c":{"b":"\\","a":{" b"입니다. :"\\"}}}', 세 번째 출력으로 확인할 수 있습니다.
요약하자면, js 객체에 하나를 표시하려면 json 문자열에 4개가 표시되어야 합니다.

기타 특수문자
1. 큰따옴표(")가 올바르게 나타날 경우 \"
2.n이어야 합니다. 생각해 보세요. json 문자열에 필요한 올바른 줄 바꿈은 다음과 같습니다. 실제로 n의 문자를 먼저 이스케이프하면 n은 일반 문자가 됩니다. js 객체로 구문 분석할 때 n과 이전 문자(하나만 남음)는 개행 문자로 해석됩니다. 다음 두 가지는 이와 유사합니다.
3.r,
4.t,

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

뜨거운 기사 태그

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

golang WebSocket과 JSON의 결합: 데이터 전송 및 파싱 구현 golang WebSocket과 JSON의 결합: 데이터 전송 및 파싱 구현 Dec 17, 2023 pm 03:06 PM

golang WebSocket과 JSON의 결합: 데이터 전송 및 파싱 구현

MySQL5.7과 MySQL8.0의 차이점은 무엇입니까? MySQL5.7과 MySQL8.0의 차이점은 무엇입니까? Feb 19, 2024 am 11:21 AM

MySQL5.7과 MySQL8.0의 차이점은 무엇입니까?

PHP 배열을 JSON으로 변환하기 위한 성능 최적화 팁 PHP 배열을 JSON으로 변환하기 위한 성능 최적화 팁 May 04, 2024 pm 06:15 PM

PHP 배열을 JSON으로 변환하기 위한 성능 최적화 팁

Pandas 사용 튜토리얼: JSON 파일 읽기를 위한 빠른 시작 Pandas 사용 튜토리얼: JSON 파일 읽기를 위한 빠른 시작 Jan 13, 2024 am 10:15 AM

Pandas 사용 튜토리얼: JSON 파일 읽기를 위한 빠른 시작

golang의 json.MarshalIndent 함수를 사용하여 구조를 형식화된 JSON 문자열로 변환합니다. golang의 json.MarshalIndent 함수를 사용하여 구조를 형식화된 JSON 문자열로 변환합니다. Nov 18, 2023 pm 01:59 PM

golang의 json.MarshalIndent 함수를 사용하여 구조를 형식화된 JSON 문자열로 변환합니다.

Jackson 라이브러리의 주석은 JSON 직렬화 및 역직렬화를 어떻게 제어합니까? Jackson 라이브러리의 주석은 JSON 직렬화 및 역직렬화를 어떻게 제어합니까? May 06, 2024 pm 10:09 PM

Jackson 라이브러리의 주석은 JSON 직렬화 및 역직렬화를 어떻게 제어합니까?

C# 개발에서 XML 및 JSON 데이터 형식을 처리하는 방법 C# 개발에서 XML 및 JSON 데이터 형식을 처리하는 방법 Oct 09, 2023 pm 06:15 PM

C# 개발에서 XML 및 JSON 데이터 형식을 처리하는 방법

MyBatis에서 작거나 같음을 사용하여 문자를 이스케이프하는 방법은 무엇입니까? MyBatis에서 작거나 같음을 사용하여 문자를 이스케이프하는 방법은 무엇입니까? Feb 24, 2024 am 11:12 AM

MyBatis에서 작거나 같음을 사용하여 문자를 이스케이프하는 방법은 무엇입니까?

See all articles