🔫 JSON : XML에 대한 뚱뚱한 대안
JSON은 분산 응용 프로그램 및 서비스를 훨씬 쉽게 제작할 수 있다는 것을 알게 된 사람들에 의해 널리 채택되었습니다. JSON의 공식 인터넷 미디어 유형은 application/json
RFC 4627
입니다. JSON 파일 이름은 확장자를 사용합니다 .json
.
► JavaScript Object Notation ( JSON
)은 텍스트 기반의 언어 독립적 인 경량 데이터 교환 형식입니다. JSON은 프로그래밍 언어로 작성된 응용 프로그램간에 데이터를 교환하는 데 사용되었습니다.
JSON 객체는 JSON 텍스트를 구문 분석하고 구성하는 데 사용되는 구문 분석 및 문자열 화의 두 가지 함수를 포함하는 단일 객체입니다.
- JSON.stringify는 다음 JSON 문법을 따르는 문자열을 생성합니다.
- JSON.parse는 JSON 문법을 따르는 문자열을 허용합니다.
parseJSON 메소드가에 포함됩니다 Fourth Edition of ECMAScript
. 그 동안 json.org에서 JavaScript 구현을 사용할 수 있습니다.
var objLiteral = {foo: 42}; // JavaScript Object
console.log('Object Literal : ', objLiteral ); // Object {foo: 42}foo: 42__proto__: Object
// This is a JSON String, like what you'd get back from an AJAX request.
var jsonString = '{"foo": 452}';
console.log('JOSN String : ', jsonString ); // {"foo": 452}
// This is how you deserialize that JSON String into an Object.
var serverResposnceObject = JSON.parse( jsonString );
console.log('Converting Ajax response to JavaScript Object : ', serverResposnceObject); // Object {foo: 42}foo: 42 __proto__: Object
// And this is how you serialize an Object into a JSON String.
var serverRequestJSON = JSON.stringify( objLiteral );
console.log('Reqesting server with JSON Data : ', serverRequestJSON); // '{"foo": 452}'
JSON은 JavaScript의 하위 집합입니다. Javascript 는 ECMAScript Programming Language Standard에서 파생되었습니다.
► ECMAScript
ECMAScript는 세계에서 가장 널리 사용되는 범용 프로그래밍 언어 중 하나로 성장했습니다. 웹 브라우저에 내장 된 언어로 가장 잘 알려져 있지만 서버 및 내장 응용 프로그램에도 널리 채택되었습니다. ECMAScript는 가장 잘 알려진 JavaScript
(Netscape Communications) 및 JScript
(Microsoft Corporation) 몇 가지 원천 기술을 기반으로 합니다. 1994 년 이전에 ECMA는 "유럽 컴퓨터 제조업체 협회"로 알려졌지만, 1994 년 이후 조직이 세계화되면서 "상표" "Ecma"는 역사적 이유로 유지되었습니다.
ECMAScript는 언어 인 반면 JavaScript, JScript 및 ActionScript는이라고 "Dialects"
합니다.
방언은 같은 언어에서 파생되었습니다. 그들은 같은 언어에서 파생되었지만 약간의 변화가 있었기 때문에 서로 매우 유사합니다. 방언은 언어 자체의 변형입니다. 단일 언어에서 파생됩니다.
- SQL 언어-일부 변경되거나 추가 된 기능이있는 Hibernate MySQL Dialect, Oracle Dialect ..
사용자의 브라우저 및 컴퓨터에 대한 정보
navigator.appName // "Netscape"
ECMAScript는 JavaScript의 기초를 형성하는 스크립팅 언어입니다. .JavaScript
language resources
ECMA-262
Links
Initial Edition, June 1997
PDF.
2nd Edition, August 1998
PDF.
3rd Edition, December 1999
PDF.
5th Edition, December 2009
PDF.
5.1 Edition, June 2011
HTML.
6th Edition, June 2015
HTML.
7ᵗʰ Edition, June 2016
HTML.
8th edition, June 2017
HTML.
9th Edition, 2018
HTML.
참고« 작업이 완료 되지 않아 ECMAScript 4 판이 출판되지 않았습니다 .
JSON은 구조화 된 데이터의 이식 가능한 표현을위한 작은 형식 규칙 세트를 정의합니다.
► 키 값은 따옴표로 묶어야하며 키에는 문자열 만 허용됩니다. String 이외의 다른 문자열을 사용하면 String으로 변환됩니다. 그러나 String 이외의 키는 사용하지 않는 것이 좋습니다. 이 같은 예를 확인 - { 'key':'val' }
이상RFC 4627 - jsonformatter
var storage = {
0 : null,
1 : "Hello"
};
console.log( storage[1] ); // Hello
console.log( JSON.stringify( storage ) ); // {"0":null,"1":"Hello","2":"world!"}
var objLiteral = {'key1':'val1'};
var arr = [10, 20], arr2 = [ 'Yash', 'Sam' ];
var obj = { k: 'v' }, obj2 = { k2: 'v2' };
var fun = function keyFun() {} ;
objLiteral[ arr ] = 'ArrayVal'; objLiteral[ arr2 ] = 'OverridenArrayVal';
objLiteral[ obj ] = 'ObjectVal'; objLiteral[ obj2 ] = 'OverridenObjectVal';
objLiteral[ fun ] = 'FunctionVal';
console.log( objLiteral );
// Object {key1: "val1", 10,20: "ArrayVal", Yash,Sam: "OverridenArrayVal", [object Object]: "OverridenObjectVal", function keyFun() {}: "FunctionVal"}
console.log( JSON.stringify( objLiteral ) );
// {"key1":"val1","10,20":"ArrayVal","Yash,Sam":"OverridenArrayVal","[object Object]":"OverridenObjectVal","function keyFun() {}":"FunctionVal"}
console.log( JSON.parse( JSON.stringify( objLiteral ) ) );
// Object {key1: "val1", 10,20: "ArrayVal", Yash,Sam: "OverridenArrayVal", [object Object]: "OverridenObjectVal", function keyFun() {}: "FunctionVal"}
console.log('Accessing Array Val : ', objLiteral[ [10,20] ] );
console.log('Accessing Object Val : ', objLiteral[ '[object Object]' ] );
console.log('Accessing Function Val : ', objLiteral[ 'function keyFun() {}' ] );
► JSON 문자열은 '가 아닌'로 인용해야합니다. 문자열은 C 또는 Java 문자열과 매우 유사합니다. 문자열은 큰 따옴표로 묶어야합니다.
- 리터럴은 변수가 아니라 고정 된 값으로 문자 그대로 스크립트에 제공합니다.
- 문자열은 대부분의 프로그래밍 언어에서 사용되는 것과 같은 표기법으로 백 슬래시 이스케이프먼트로 따옴표로 묶인 0 개 이상의 문자 시퀀스입니다.
- 🔫-특수 기호는 문자열에 허용되지만 사용을 권장하지는 않습니다.
- \ "-특수 문자를 이스케이프 할 수 있습니다. 그러나 작은 따옴표 ( ')를 이스케이프 처리하지 않는 것이 좋습니다. 엄격 모드에서는 던지고 오류가 발생합니다.
SyntaxError: Unexpected token ' in JSON
{ "Hai\" \n Team 🔫":5, "Bye \'": 7 }
온라인 JSON Edtions 에서이 코드 를 확인하십시오 .Modes
notStrict
,
Strinct
.
var jsonString = "{'foo': 452}"; // {'foo': 452}
var jsonStr = '{"foo": 452}'; // {"foo": 452}
JSON.parse( jsonString ); // Unexpected token ' in JSON at position 1(…)
JSON.parse( jsonStr ); // Object {foo: 452}
objLiteral['key'] = 'val'; // Object {foo: 42, key: "val"}
objLiteral.key2 = 'val';
// objLiteral.key\n3 - SyntaxError: Invalid or unexpected token
objLiteral['key\n3'] = 'val'; // Object {"foo": "42", key: "val", key2: "val", "key↵3": "val"}
JSON.stringify( objLiteral ); // {"foo":"42","key":"val","key2":"val","key\n3":"val"}
객체 속성 접근자는 점 표기법 또는 대괄호 표기법을 사용하여 객체의 속성에 액세스 할 수 있습니다.
► 값 범위가 더 제한적입니다 (예 : 기능 허용 안 함). 값은 큰 따옴표, 숫자, 부울, 널, 오브젝트 또는 배열의 문자열 일 수 있습니다. 이러한 구조는 중첩 될 수 있습니다.
var objLiteral = {};
objLiteral.funKey = function sayHello() {
console.log('Object Key with function as value - Its outcome message.');
};
objLiteral['Key'] = 'Val';
console.log('Object Literal Fun : ', objLiteral );
// Object Literal Fun : Object {Key: "Val"}Key: "Val"funKey: sayHello()__proto__: Object
console.log( JSON.stringify( objLiteral ) ); // {"Key":"Val"}
► JavaScript
는 ECMAScript 표준의 가장 보편적 인 구현입니다. Javascript의 핵심 기능은 ECMAScript 표준을 기반으로하지만 Javascript에는 ECMA 사양 / 표준에없는 다른 추가 기능도 있습니다. 모든 브라우저에는 JavaScript 인터프리터가 있습니다.
JavaScript는 동적으로 입력되는 언어입니다. 즉, 변수를 선언 할 때 변수의 데이터 유형을 지정할 필요가 없으며 스크립트 실행 중에 데이터 유형이 필요에 따라 자동으로 변환됩니다.
Literals
:
'37' - 7 // 30
'37' + 7 // "377"
+'37' + 7 // 44
+'37' // 37
'37' // "37"
parseInt('37'); // 37
parseInt('3.7'); // 3
parseFloat(3.7); // 3.7
// An alternative method of retrieving a number from a string is with the + (unary plus) operator:
+'3.7' // 3.7
Object literals
RFC 7159
객체 구조는 0 개 이상의 이름 / 값 쌍 (또는 멤버)을 둘러싸는 중괄호 쌍으로 표시됩니다. 이름은 문자열입니다. 각 이름 뒤에 단일 콜론이 나타나 이름과 값을 구분합니다. 단일 쉼표는 다음 이름과 값을 구분합니다. 객체 내 이름은 고유해야합니다.
ECMAScript는 프로토 타입 기반 상속을 지원합니다. 모든 생성자에는 관련 프로토 타입이 있으며 해당 생성자에 의해 작성된 모든 오브젝트에는 해당 생성자와 연관된 프로토 타입 (오브젝트의 프로토 타입이라고 함)에 대한 암시 적 참조가 있습니다. 또한 프로토 타입에는 프로토 타입에 대한 널이 아닌 암시 적 참조가있을 수 있습니다. 이것을 프로토 타입 체인이라고합니다.
클래스 기반 객체 지향 언어에서 일반적으로 상태는 인스턴스에 의해 전달되고 메서드는 클래스에 의해 전달되며 상속은 구조와 동작에 지나지 않습니다. ECMAScript에서 상태와 메소드는 객체에 의해 전달되며 구조, 동작 및 상태는 모두 상속됩니다.
프로토 타입은 ECMAScript에서 구조, 상태 및 동작 상속을 구현하는 데 사용되는 객체입니다. 생성자가 객체를 만들면 해당 객체는 속성 참조를 확인하기 위해 생성자의 관련 프로토 타입을 암시 적으로 참조합니다. 생성자의 관련 프로토 타입은 프로그램 표현식 constructor.prototype으로 참조 할 수 있으며, 프로토 타입을 공유하는 모든 객체는 상속을 통해 객체의 프로토 타입에 추가 된 속성을 공유합니다.