서문
이 글을 쓰는 목적은 개발자들이 문자열을 JSON 객체로 변환, JSON 객체를 문자열로 변환 및 기타 유사한 주제로 말하는 것을 자주 볼 수 있기 때문에 이전에 수집했던 외국인의 기사를 편집하고 번역했습니다. 여기서는 모두가 논의할 내용입니다. 잘못된 점이 있으면 지적해 주시기 바랍니다.
텍스트
이 기사의 주제는 ECMAScript262-3을 기반으로 작성되었습니다. 2011년 새로운 262-5 사양에는 일반적으로 JSON이라고 부르는 것과 관련된 JSON 개체가 추가되었습니다. 마찬가지로, 기사의 마지막 섹션에서는 새로 추가된 JSON 개체에 대해 설명합니다.
영문 원문: http://benalman.com/news/2010/03/theres-no-such-thing-as-a-json/
매우 흔한 오해를 명확히 하고 싶습니다. , 제 생각에는 많은 JavaScript 개발자가 JavaScript 개체 리터럴(JSON 개체)의 구문이 JSON 사양에 설명된 것과 동일하기 때문에 실수로 호출하는 것 같습니다. 하지만 사양에는 JSON이 단지 데이터 교환 언어일 뿐이라고 명확하게 명시되어 있으므로 사용할 때만 JSON이라고 합니다. 문자열 컨텍스트에서.
직렬화 및 역직렬화
두 개의 프로그램(또는 서버, 언어 등)이 대화형으로 통신해야 하는 경우 문자열이 여러 언어에서 비슷한 방식으로 구문 분석되므로 문자열을 사용하는 경향이 있습니다. 복잡한 데이터 구조가 자주 사용되며 다양한 대괄호 {}, 괄호(), 대괄호 <>
이를 위해 우리는 이러한 복잡한 데이터 구조를 문자열로 설명하기 위한 표준 규칙과 구문을 개발했습니다. JSON은 구문 중 하나일 뿐입니다. 문자열 컨텍스트에서 개체, 배열, 문자열, 숫자, 부울 및 null을 설명하고 이를 프로그램 간에 전송하고 필요한 형식으로 역직렬화할 수 있습니다. YAML 및 XML(요청 매개변수 포함)도 널리 사용되는 데이터 교환 형식이지만 우리는 우리를 JavaScript 개발자라고 부르는 JSON을 좋아합니다!
리터럴
참고용으로 Mozilla 개발자 센터의 몇 문장 인용:
변수가 아닌 고정 값이므로 스크립트를 "문자 그대로" 이해할 수 있습니다. (리터럴)
문자열 리터럴은 큰따옴표(") 또는 작은따옴표(')로 둘러싸인 0개 이상의 문자로 구성됩니다. (문자열 리터럴)
객체 리터럴은 0개 이상의 중괄호({})로 구성됩니다. 객체 속성 이름-값 쌍(객체 리터럴)
언제 JSON이고 언제 JSON이 아닌가?
JSON은 JavaScript의 하위 집합인 자체 구문도 포함합니다. .
{ "prop": "val" } 이러한 선언은 사용되는 컨텍스트에 따라 JavaScript 객체 리터럴이거나 JSON 문자열일 수 있습니다(단일 또는 큰따옴표로 묶거나 텍스트 파일에서 읽음), 객체 리터럴 컨텍스트에서 사용되는 경우 객체 리터럴