JSON과 JavaScript 객체의 차이점은 무엇입니까? [복제]
이 질문에 이미 답변이 있습니다.
JSON 및 JavaScript 개체를 처음 사용합니다.
- 누군가 JSON과 JavaScript 객체의 차이점을 설명해 주시겠습니까?
- 그들의 용도는 무엇입니까?
- 하나가 다른 것보다 낫습니까? 아니면 상황에 따라 달라 지나요?
- 어떤 상황에서 어떤 것을 사용해야합니까?
- 처음에 JSON이 생성 된 이유는 무엇입니까? 주요 목적은 무엇입니까?
- 누군가 JavaScript 객체가 아닌 JSON을 사용해야하는 경우와 그 반대의 경우에 대한 예를 제공 할 수 있습니까?
먼저 JSON이 무엇인지 알아야합니다.
- 그것은이다 언어 무신론자 데이터 교환 형식입니다.
JSON의 구문은 JavaScript Object Literal 표기법에서 영감을 얻었지만 차이점이 있습니다.
예를 들어 JSON에서는 모든 키 를 따옴표로 묶어야하지만 객체 리터럴에서는 필요하지 않습니다.
// JSON:
{ "foo": "bar" }
// Object literal:
var o = { foo: "bar" };
JavaScript (ECMAScript 3rd. Edition에서보다 정확하게)에서는 예약어 를 속성 이름으로 사용할 수 없기 때문에 JSON에서는 따옴표가 필수입니다. 예를 들면 다음과 같습니다.
var o = { if: "foo" }; // SyntaxError in ES3
그러나 문자열 리터럴을 속성 이름으로 사용 (속성 이름 인용)하면 문제가 발생하지 않습니다.
var o = { "if": "foo" };
따라서 "호환성" (그리고 쉽게 평가할 수 있습니까?)을 위해 따옴표는 필수입니다.
JSON의 데이터 유형도 다음 값으로 제한됩니다.
string
number
object
array
- 다음과 같은 리터럴 :
true
false
null
Strings
변화 의 문법 . 그들은 필요 로 구분 따옴표 자바 스크립트에서, 당신은 교환 따옴표 나 큰 따옴표를 사용할 수 있지만,.
// Invalid JSON:
{ "foo": 'bar' }
허용되는 JSON 문법 Numbers
도 변경됩니다. JavaScript에서 예를 들어 16 진수 리터럴 0xFF
또는 (악명 높은) 8 진수 리터럴 (예 : 010
. JSON에서는 Decimal Literals 만 사용할 수 있습니다.
// Invalid JSON:
{ "foo": 0xFF }
8 진 리터럴이 잘못 허용되는 버그가있는 구현 (Firefox 3.5+, IE8 +, json2.js) JSON.parse('01')
이 있습니다 SyntaxError
. 예를 들어 .
JSON은 객체의 문자열 표현입니다. 상호 운용 가능한 직렬화 형식입니다. 그것은 자바 스크립트에만 묶여 있지 않습니다. 예를 들어 .NET 개체를 직렬화 / 역 직렬화 할 수있는 .NET 용 JSON 직렬화 기가 있습니다.
따라서 개체를 문자열로 변환 할 수있는 형식 일 뿐이며 유선을 통해 전송하려는 경우 편리합니다.
자바 스크립트 객체 표현에 매우 가깝고 eval()
JSON 문자열 만 있으면 해당 객체를 얻을 수 있습니다.
JSON은 데이터 교환 형식으로, 실행하고 객체를 다시 가져올 수있는 YAML 또는 JavaScript 코드의 하위 집합처럼 보입니다. JavaScript 개체는 JavaScript의 개체입니다.
JSON이 데이터 교환 형식이므로 텍스트 형식으로 구조화 된 데이터를 교환 할 수 있습니다. 지금까지는 JavaScript와 상당히 분리되어 있습니다. JavaScript 객체를 사용하면 JavaScript 프로그램을 실행하는 동안 구조화 된 데이터를 만들고 작업 할 수 있습니다.
'IT story' 카테고리의 다른 글
Haskell, Lisp 및 자세한 정보 (0) | 2020.08.13 |
---|---|
John Carmack의 비정상적인 고속 역 제곱근 (Quake III) (0) | 2020.08.13 |
Angular2 변경 감지 : 중첩 된 개체에 대해 ngOnChanges가 실행되지 않음 (0) | 2020.08.13 |
교리 2는 manyToOne 관계에서 nullable = false를 사용할 수 없습니까? (0) | 2020.08.13 |
NodeJS의 JavaScript OOP : 어떻게? (0) | 2020.08.13 |