찾다
웹 프론트엔드JS 튜토리얼JavaScript_Basics의 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으로 문의하세요.
SpringBoot之Json的序列化和反序列化问题怎么解决SpringBoot之Json的序列化和反序列化问题怎么解决May 12, 2023 pm 04:07 PM

控制json序列化/反序列化1.@JsonIgnoreProperties的用法@JsonIgnoreProperties(value={"prop1","prop2"})用来修饰Pojo类,在序列化和反序列化的时候忽略指定的属性,可以忽略一个或多个属性.@JsonIgnoreProperties(ignoreUnknown=true)用来修饰Pojo类,在反序列化的时候忽略那些无法被设置的属性,包括无法在构造子设置和没有对应的setter方法.2.@Js

如何在Go语言中使用正则表达式转义特殊字符如何在Go语言中使用正则表达式转义特殊字符Jul 13, 2023 am 11:16 AM

如何在Go语言中使用正则表达式转义特殊字符引言:正则表达式是一种强大的字符串匹配工具,在处理文本时非常有用。但是,在某些情况下,我们可能需要在正则表达式中使用一些特殊字符,如"+"、"*"等,这些字符在正则表达式中具有特殊的含义。为了使用这些特殊字符的字面意义,我们需要对它们进行转义。本文将介绍如何在Go语言中使用正则表达式转义特殊字符,并提供代码示例进行说

深入解析JWT(JSON Web Token)的原理及用法深入解析JWT(JSON Web Token)的原理及用法Jan 10, 2023 am 10:55 AM

本篇文章给大家带来了关于JWT的相关知识,其中主要介绍了什么是JWT?JWT的原理以及用法是什么?感兴趣的朋友,下面一起来看一下吧,希望对大家有帮助。

php输出json无法解析的原因和解决方法【总结】php输出json无法解析的原因和解决方法【总结】Mar 23, 2023 pm 04:35 PM

PHP作为一种常见的编程语言,在web开发中使用广泛,其与前端交互的方式也多种多样。其中,输出Json数据是一种常见的交互方式,但有时候会碰到Json无法解析的问题。为什么会出现无法解析的情况呢?下面列举了几个可能的原因。

php如何将xml转为json格式?3种方法分享php如何将xml转为json格式?3种方法分享Mar 22, 2023 am 10:38 AM

当我们处理数据时经常会遇到将XML格式转换为JSON格式的需求。PHP有许多内置函数可以帮助我们执行这个操作。在本文中,我们将讨论将XML格式转换为JSON格式的不同方法。

使用MyBatis中的小于等于转义字符方法是什么?使用MyBatis中的小于等于转义字符方法是什么?Feb 24, 2024 am 11:12 AM

在MyBatis中使用小于等于转义字符是一个常见的需求,在实际开发过程中经常会遇到这样的情况。下面我们将详细介绍如何在MyBatis中使用小于等于转义字符,并提供具体的代码示例。首先,我们需要明确小于等于转义字符在SQL语句中的表示方式。在SQL语句中,小于等于操作符通常以“

聊聊怎么使用Node将Excel转为JSON聊聊怎么使用Node将Excel转为JSONNov 28, 2022 pm 08:02 PM

怎么使用Node将Excel转为JSON?下面本篇文章给大家介绍一下Node中转换Excel成JSON的方法,希望对大家有所帮助!

如何在Go中使用自定义JSON序列化?如何在Go中使用自定义JSON序列化?May 11, 2023 pm 04:55 PM

随着现代编程语言对数据结构和网络传输的要求越来越高,JSON格式也成为了一种重要的数据交换格式。JSON能够更好的传输数据,而Go语言因为具有高性能和简单的应用接口而受到越来越多的青睐。在Go中,可以通过自定义JSON序列化来更好的满足数据传输的需求。本文将会探讨如何在Go中使用自定义JSON序列化。一、什么是JSON序列化?JSON序列化是指将一个对象转换

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

뜨거운 도구

SublimeText3 중국어 버전

SublimeText3 중국어 버전

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

SublimeText3 Mac 버전

SublimeText3 Mac 버전

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

맨티스BT

맨티스BT

Mantis는 제품 결함 추적을 돕기 위해 설계된 배포하기 쉬운 웹 기반 결함 추적 도구입니다. PHP, MySQL 및 웹 서버가 필요합니다. 데모 및 호스팅 서비스를 확인해 보세요.

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

DVWA

DVWA

DVWA(Damn Vulnerable Web App)는 매우 취약한 PHP/MySQL 웹 애플리케이션입니다. 주요 목표는 보안 전문가가 법적 환경에서 자신의 기술과 도구를 테스트하고, 웹 개발자가 웹 응용 프로그램 보안 프로세스를 더 잘 이해할 수 있도록 돕고, 교사/학생이 교실 환경 웹 응용 프로그램에서 가르치고 배울 수 있도록 돕는 것입니다. 보안. DVWA의 목표는 다양한 난이도의 간단하고 간단한 인터페이스를 통해 가장 일반적인 웹 취약점 중 일부를 연습하는 것입니다. 이 소프트웨어는