IE8 기본 JSON support_json
이 새로운 기본 JSON 기능을 사용하면 Internet Explorer 8을 기존 AJAX 응용 프로그램에서 더 빠르고 안전하게 실행할 수 있습니다.
JSON이란 무엇인가요?
대부분의 개발자가 AJAX 프로그램만 개발하는 것은 아닙니다. 여기서 몇 가지 배경 지식을 소개하겠습니다. JSON은 사람이 읽을 수 있는 간단한 데이터 교환 형식입니다. AJAX 프로그램에서 이 형식은 일반적으로 서버와 웹 프로그램 간에 데이터를 전송할 때 사용됩니다.
예를 들어 즐겨찾는 웹메일에서 연락처 이름을 선택하면 연락처 정보를 볼 수 있습니다. 서버에서 웹 프로그램(브라우저에서 실행)으로 보낸 데이터 스트림은 다음과 같습니다.
{
"firstName": "cyra",
"lastName": "richardson ",
"address": {
"streetAddress": "1 Microsoft way",
"city": "Redmond",
"state": "WA",
"postalCode ": 98052
},
"phoneNumbers": [
"425-777-7777",
"206-777-7777"
]
}
다행히 이 형식은 JavaScript의 구문과 완벽하게 호환됩니다. 오늘날 많은 프로그램은 Javascript의 eval() 함수를 사용하여 얻은 데이터를 Javascript 객체로 변환합니다. eval()을 사용하는 것은 안전하지 않으며 리소스를 소모합니다. eval()은 이 문자열을 Jscript 표현식으로 구문 분석하고 실행합니다. eval()에 전달된 문자열이 변조된 경우 예상하지 못한 데이터가 포함될 수 있으며 웹 애플리케이션에 삽입될 수 있는 다른 사람의 코드도 포함될 수 있습니다.
요즘에는 신뢰할 수 없는 JSON 데이터를 보다 안전하게 구문 분석하기 위해 Javascript로 작성된 라이브러리가 많이 있습니다. Jscript(http://www.json.org/json_parser.js)로 작성된 일부 파서는 데이터에 대해 엄격한 검증을 수행하며, json2, js(http://www.json.org/json2.js)와 같은 일부 라이브러리는 정규식을 사용하여 입력 문자열을 종합적으로 확인한 다음 eval()을 사용하여 빠르게 구문 분석합니다. 이상적인 솔루션은 코드 삽입으로부터 애플리케이션을 보호하고 빠르게 실행되며 어디에서나 사용할 수 있는 기본 구현입니다.
IE8 Jscript의 기본 JSON
IE8의 Jscript 엔진은 이미 JSON의 완전한 기본 구현을 갖추고 있으며 ES3.1 제안 작업 초안과 일치합니다. 주소 http://wiki.ecmascript.org/doku.php?id=es3.1:es3.1_proposal_working_draft)에 설명된 JSON 지원의 호환성을 유지하면서 직렬화 및 역직렬화 속도를 크게 향상시키고 보안을 향상시킵니다. 신뢰할 수 없는 데이터를 구문 분석합니다.
API
수정하거나 재정의할 수 있는 새로운 내장 개체 "JSON"을 정의합니다. 수학이나 기타 내장된 전역 개체와 매우 비슷해 보입니다. JSON 객체 외에도 toJSON()과 같은 특정 함수도 Date, Number, String 및 boolean 객체의 프로토타입에 추가되었습니다. JSON 객체에는 두 가지 메서드(parse() 및 stringify())가 있습니다.
예:
var jsObjString = "{"memberNull" : null, "memberNum" : 3, "memberStr" : "StringJSON", "memberBool" : true , "memberObj" : { "mnum" : 1, "mbool" : false}, "memberX" : {}, "memberArray" : [33, "StringTst",null,{}]";
var jsObjStringParsed = JSON.parse(jsObjString ) ;
var jsObjStringBack = JSON.stringify(jsObjStringParsed);
parse() 메서드에 의해 생성되고 stringify() 메서드를 통해 다시 직렬화되는 개체는 다음 개체와 정확히 동일합니다.
var jsObjStringParsed =
{
"memberNull" : null,
"memberNum" : 3,
"memberStr" : "StringJSON",
"memberBool" : true ,
"memberObj" :
{
"mnum" : 1,
"mbool" : false
},
"memberX" : {},
"memberArray" :
};
JSON.parse(source, Revival )
JSON.parse 메서드는 JSON 형식의 문자열( 매개변수 소스에 의해 지정됨) Jscript 개체 또는 배열을 생성합니다.
선택적 매개변수인 Revival은 구문 분석의 변경 사항을 설명하는 데 사용되는 사용자 정의 함수입니다. 결과 객체나 배열은 재귀적으로 순회되며, 각 멤버에 부활 기능이 사용되며, 각 멤버 값은 부활의 반환 값으로 대체됩니다. Reviver가 null을 반환하면 개체 구성원이 삭제됩니다. 순회 및 부활자 호출은 후순 순회에서 완료됩니다. 즉, 개체의 모든 구성원이 "소생"된 후에 전체 개체도 "소생"됩니다.
reviver는 주로 ISO와 같은 문자열을 식별하고 이를 Date 객체로 변환하는 데 사용됩니다. 지금까지 JSON 형식(http://www.json.org/)은 Date 개체에 대해 앞뒤로 변환할 수 없습니다. 이는 Jscript에 표준 Date 텍스트 크기가 없기 때문입니다. ES3.1 초안(http://wiki.ecmascript.org/doku.php?id=es3.1: es3.1_proposal_working_draft)에는 이 문제를 해결하기 위해 부활 기능을 사용하는 방법에 대한 예가 포함되어 있습니다.
JSON.stringify(value, replacement, space)
직렬화 방식입니다. value 매개변수로 지정된 객체 또는 배열을 매개변수로 사용하고 JSON 형식의 문자열을 생성합니다. 객체 또는 배열은 재귀적으로 액세스되며 특정 JSON 형식으로 직렬화됩니다. value 매개 변수에 toJSON() 메서드가 있는 경우 이 메서드는 첫 번째 필터 역할을 하며 원래 값은 value.toJSON(key)로 대체되고 최종 값은 직렬화됩니다. 매개변수 키는 문자열입니다. (key:value)와 같은 객체가 직렬화되면 키는 멤버의 이름입니다. 루트 객체의 경우 키는 빈 문자열입니다.
Date.prototype.toJSON()은 이스케이프가 필요하지 않은 문자열을 생성하며 진정한 직렬 변환기입니다. stringify()는 변경 사항 없이 원래 문자열을 반환하기 때문입니다. 날짜 객체는 toJSON() 메서드를 통해 직렬화됩니다.
Number.prototype.toJSON(), String.prototype.toJSON(), Boolean.prototype.toJSON() 함수는 ValueOf()를 반환합니다. "var num = new Number(3.14);"와 같은 객체의 적절한 직렬화에 사용됩니다.
선택적인 대체 매개변수는 필터 역할을 하며 재귀적으로 사용됩니다. 함수일 수도 있고 배열일 수도 있습니다. replacement가 함수인 경우 각 객체 멤버 key:value에 대해 replacement(key,value)가 호출됩니다. 루트 객체의 경우, replacement("",value)를 호출하세요. 교체자가 배열인 경우 배열 문자열이어야 합니다. 배열의 요소는 직렬화할 멤버의 이름입니다. 직렬화 순서는 배열의 이름 순서에 따라 결정됩니다. 배열을 직렬화할 때 배열 대체자는 무시됩니다.
선택적 매개변수 공백은 출력 텍스트의 형식을 지정하는 방법입니다. 이 매개변수를 생략하면 출력 텍스트에 추가 공백이 없습니다. 숫자인 경우 각 들여쓰기 수준에 대한 공백 수를 지정합니다. 문자(예: "t" 또는 " ")인 경우 해당 문자로 각 문자 수준을 들여씁니다.
기존 웹페이지에 어떤 영향을 미칠까요?
ES3.1 JSON 제안은 인기 있는 json2.js에서 사용되는 주요 요소입니다. JSON이라는 이름도 사용합니다. 전역 객체 JSON은 재정의될 수 있습니다. 그러나 더 이상 정의되지 않은 개체가 아닙니다. 이는 스크립팅 언어에 new 키워드를 도입하는 것과 같습니다. 이름을 채택하면 기존 코드에 영향을 미치는 경우가 있습니다. json2.js를 사용하는 페이지는 영향을 받을 가능성이 없습니다.극소수의 예외를 제외하고 이러한 모든 페이지는 계속해서 정상적으로 작동하며 더 빠르게 작동합니다.
자체 JSON 개체 정의를 구현하는 페이지, 특히 "if(!this.JSON) { JSON=...}"과 같은 패턴을 사용하여 정의된 JSON 개체가 영향을 받을 수 있습니다. 이 문제를 해결하는 두 가지 주요 방법이 있습니다.
1. 기존 코드를 마이그레이션하고 기본 JSON 개체를 사용합니다.
JSON 구현이 json2.js의 일부 버전을 기반으로 하는 경우 이를 마이그레이션하는 것은 매우 간단합니다.
2. 기본 JSON 지원을 사용하지 않기로 결정하고 기존 JSON 개체를 계속 사용합니다.
JSON 이름을 바꾸거나 다시 작성하면 됩니다. 이름 바꾸기는 JSON 이름을 사용하는 모든 코드를 "MyJSON"과 같은 이름으로 변경하는 것을 의미합니다. 다시 작성한다는 것은 자체 JSON 정의가 기본 기본 JSON 정의를 사용하는 모든 코드를 재정의한다는 것을 의미합니다. 대부분의 경우 "if(!this.JSON)" 조건을 제거하면 효과가 있습니다.
3.1 표준의 영향을 고려하면 JSON이라는 이름을 사용하는 것은 잘 정의된 인터페이스를 통해 상호 운용하려는 우리의 바람과 일치합니다.
네이티브 JSON에 관해 할 말이 많습니다. 파서는 eval()을 기반으로 하지 않으며 별도의 구현입니다. JSON 지원(http://wiki.ecmascript.org/doku.php?id=es3.1:json_support)에서 제공하는 참조 파서와 동일합니다. 또한 http://www.json.org/json_parser.js만큼 안전하며 훨씬 빠르게 실행됩니다. 따라서 eval() 또는 자체 JSON 라이브러리를 사용하는 경우 더 나은 성능과 안전한 작업을 위해 IE8의 기본 JSON 구현을 확인하세요.

핫 AI 도구

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

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

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

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

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

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

뜨거운 주제











golangWebSocket과 JSON의 결합: 데이터 전송과 파싱의 실현 현대 웹 개발에서 실시간 데이터 전송은 점점 더 중요해지고 있습니다. WebSocket은 양방향 통신을 달성하는 데 사용되는 프로토콜입니다. 기존 HTTP 요청-응답 모델과 달리 WebSocket을 사용하면 서버가 클라이언트에 데이터를 적극적으로 푸시할 수 있습니다. JSON(JavaScriptObjectNotation)은 간결하고 읽기 쉬운 데이터 교환을 위한 경량 형식입니다.

Gson@Expose 주석은 직렬화 또는 역직렬화를 위해 필드가 노출되는지(포함 여부)를 표시하는 데 사용할 수 있습니다. @Expose 주석은 두 개의 매개변수를 가질 수 있으며, 각 매개변수는 부울 값이고 true 또는 false 값을 가질 수 있습니다. GSON이 @Expose 주석에 반응하려면 GsonBuilder 클래스를 사용하여 Gson 인스턴스를 생성해야 하며, 직렬화 또는 역직렬화에서 Expose 주석이 없는 모든 필드를 제외하도록 Gson을 구성하는 제외FieldsWithoutExposeAnnotation() 메서드를 호출해야 합니다. 구문 publicGsonBuilderexclude

MySQL5.7과 MySQL8.0은 서로 다른 두 가지 MySQL 데이터베이스 버전입니다. 두 버전 사이에는 몇 가지 주요 차이점이 있습니다. 성능 개선: MySQL8.0은 MySQL5.7에 비해 성능이 일부 향상되었습니다. 여기에는 더 나은 쿼리 최적화 프로그램, 더 효율적인 쿼리 실행 계획 생성, 더 나은 인덱싱 알고리즘 및 병렬 쿼리 등이 포함됩니다. 이러한 개선 사항은 쿼리 성능과 전반적인 시스템 성능을 향상시킬 수 있습니다. JSON 지원: MySQL 8.0에는 JSON 데이터의 저장, 쿼리 및 인덱싱을 포함하여 JSON 데이터 유형에 대한 기본 지원이 도입되었습니다. 이를 통해 MySQL에서 JSON 데이터를 보다 편리하고 효율적으로 처리하고 조작할 수 있습니다. 트랜잭션 기능: MySQL8.0은 원자와 같은 몇 가지 새로운 트랜잭션 기능을 도입합니다.

PHP 배열을 JSON으로 변환하기 위한 성능 최적화 방법은 다음과 같습니다. JSON 확장 및 json_encode() 함수를 사용하여 문자 이스케이프를 방지하고 버퍼를 사용하여 JSON 인코딩 결과 캐싱을 고려합니다. JSON 인코딩 라이브러리.

C# 개발에서 XML 및 JSON 데이터 형식을 처리하려면 특정 코드 예제가 필요합니다. 최신 소프트웨어 개발에서는 XML과 JSON이 널리 사용되는 두 가지 데이터 형식입니다. XML(Extensible Markup Language)은 데이터를 저장하고 전송하는 데 사용되는 마크업 언어인 반면, JSON(JavaScript Object Notation)은 경량 데이터 교환 형식입니다. C# 개발에서는 XML 및 JSON 데이터를 처리하고 조작해야 하는 경우가 많습니다. 이 기사에서는 C#을 사용하여 이 두 가지 데이터 형식을 처리하고 첨부하는 방법에 중점을 둘 것입니다.

Golang에서 json.MarshalIndent 함수를 사용하여 구조를 형식화된 JSON 문자열로 변환합니다. Golang에서 프로그램을 작성할 때 구조를 JSON 문자열로 변환해야 하는 경우가 종종 있습니다. 이 과정에서 json.MarshalIndent 함수가 도움이 될 수 있습니다. 포맷된 출력. 아래에서는 이 기능을 사용하는 방법을 자세히 설명하고 구체적인 코드 예제를 제공합니다. 먼저 일부 데이터가 포함된 구조를 만들어 보겠습니다. 다음은 표시입니다

빠른 시작: JSON 파일을 읽는 Pandas 방법, 특정 코드 예제가 필요합니다. 소개: 데이터 분석 및 데이터 과학 분야에서 Pandas는 중요한 Python 라이브러리 중 하나입니다. 풍부한 기능과 유연한 데이터 구조를 제공하며, 다양한 데이터를 쉽게 처리하고 분석할 수 있습니다. 실제 애플리케이션에서는 JSON 파일을 읽어야 하는 상황에 자주 직면합니다. 이 기사에서는 Pandas를 사용하여 JSON 파일을 읽고 특정 코드 예제를 첨부하는 방법을 소개합니다. 1. 팬더 설치

Jackson 라이브러리의 주석은 JSON 직렬화 및 역직렬화를 제어합니다. 직렬화: @JsonIgnore: 속성 무시 @JsonProperty: 이름 지정 @JsonGetter: get 메서드 사용 @JsonSetter: set 메서드 사용 역직렬화: @JsonIgnoreProperties: @JsonProperty 속성 무시: 이름 지정 @JsonCreator: 생성자 사용 @JsonDeserialize: 사용자 정의 논리
