🔫 JSON : Beztłuszczowa alternatywa dla XML
JSON został powszechnie przyjęty przez ludzi, którzy stwierdzili, że znacznie ułatwia tworzenie rozproszonych aplikacji i usług. Oficjalny typ mediów internetowych dla JSON to application/json
RFC 4627
. Nazwy plików JSON używają rozszerzenia .json
.
► JavaScript Object Notation ( JSON
) to lekki, tekstowy, niezależny od języka format wymiany danych. JSON został wykorzystany do wymiany danych między aplikacjami napisanymi w dowolnym języku programowania.
Obiekt JSON to pojedynczy obiekt, który zawiera dwie funkcje: parsowanie i stringify, które są używane do parsowania i konstruowania tekstów JSON.
- JSON.stringify tworzy ciąg, który jest zgodny z następującą gramatyką JSON.
- JSON.parse akceptuje ciąg znaków zgodny z gramatyką JSON.
Metoda parseJSON zostanie uwzględniona w pliku Fourth Edition of ECMAScript
. W międzyczasie implementacja JavaScript jest dostępna na json.org.
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 jest podzbiorem JavaScript. Javascript został wyprowadzony ze standardu ECMAScript Programming Language Standard.
► ECMAScript
ECMAScript stał się jednym z najczęściej używanych na świecie języków programowania ogólnego przeznaczenia. Jest najlepiej znany jako język osadzony w przeglądarkach internetowych, ale jest również szeroko stosowany w aplikacjach serwerowych i osadzonych. ECMAScript jest oparta na kilku technologii, pochodzących z najbardziej znaną istotą JavaScript
(Netscape Communications)) i JScript
(Microsoft Corporation).) . Chociaż przed 1994 r. ECMA była znana jako „Europejskie Stowarzyszenie Producentów Komputerów”, po 1994 r., Kiedy organizacja stała się globalna, „znak towarowy” „Ecma” został zachowany ze względów historycznych.
ECMAScript jest językiem, podczas gdy JavaScript, JScript, a nawet ActionScript są nazywane "Dialects"
.
Dialekty pochodzą z tego samego języka. Są do siebie bardzo podobne, ponieważ pochodzą z tego samego języka, ale przeszły pewne zmiany. Dialekt jest odmianą samego języka. Pochodzi z jednego języka.
- Język SQL - Hibernacja MySQL Dialect, Oracle Dialect, .. które mają pewne zmiany lub dodatkowe funkcje.
Informacje o przeglądarce i komputerze użytkowników.
navigator.appName // "Netscape"
ECMAScript to język skryptowy, który stanowi podstawę 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.
UWAGA « Czwarte wydanie ECMAScript nie zostało opublikowane, ponieważ praca była niekompletna .
JSON definiuje mały zestaw reguł formatowania do przenośnej reprezentacji danych strukturalnych.
► Wartości klucza muszą być cytowane, tylko klucze są dozwolone dla kluczy. Jeśli użyjesz innego niż String, zostanie przekonwertowany na String. Ale nie zaleca się używania kluczy innych niż String. Sprawdź przykład taki jak ten - { 'key':'val' }
ponadRFC 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() {}' ] );
► Ciągi JSON muszą być cytowane za pomocą „a nie”. Ciąg jest bardzo podobny do ciągu C lub Java. Ciągi powinny być zawinięte w podwójne cudzysłowy.
- Literały to stałe wartości, a nie zmienne, które dosłownie podajesz w skrypcie.
- Ciąg jest sekwencją zero lub więcej znaków owiniętych w cudzysłów z odwrotnym ukośnikiem, ta sama notacja stosowana w większości języków programowania.
- 🔫 - Symbole specjalne są dozwolone w łańcuchach, ale nie zaleca się ich używania.
- \ "- Znaki specjalne można uciec. Nie zaleca się jednak ucieczki (') Pojedyncze cudzysłowy. W trybie ścisłym będzie rzucał, a błąd -
SyntaxError: Unexpected token ' in JSON
Sprawdź za pomocą tego kodu { "Hai\" \n Team 🔫":5, "Bye \'": 7 }
w Internecie 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"}
Accessory właściwości obiektu zapewniają dostęp do właściwości obiektu za pomocą notacji kropkowej lub notacji nawiasowej.
► Masz bardziej ograniczony zakres wartości (np. Niedozwolone funkcje). Wartością może być ciąg znaków w podwójnych cudzysłowach, liczba, wartość logiczna, null, obiekt lub tablica. Struktury te można zagnieżdżać.
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
jest najpopularniejszą implementacją standardu ECMAScript. Podstawowe funkcje Javascript są oparte na standardzie ECMAScript, ale Javascript ma również inne dodatkowe funkcje, których nie ma w specyfikacji / standardzie ECMA. Każda przeglądarka ma interpreter JavaScript.
JavaScript jest językiem pisanym dynamicznie. Oznacza to, że nie musisz określać typu danych zmiennej podczas jej deklarowania, a typy danych są konwertowane automatycznie w razie potrzeby podczas wykonywania skryptu.
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
Struktura obiektu jest reprezentowana jako para nawiasów klamrowych otaczających zero lub więcej par nazwa / wartość (lub członków). Nazwa to ciąg znaków. Po każdej nazwie występuje pojedynczy dwukropek, oddzielający nazwę od wartości. Pojedynczy przecinek oddziela wartość od następującej nazwy. Nazwy w obiekcie POWINNY być unikalne.
ECMAScript obsługuje dziedziczenie oparte na prototypach. Każdy konstruktor ma powiązany prototyp, a każdy obiekt utworzony przez ten konstruktor ma niejawne odniesienie do prototypu (zwanego prototypem obiektu) powiązanego z jego konstruktorem. Ponadto prototyp może zawierać niejawne odniesienie do swojego prototypu i tak dalej; nazywa się to łańcuchem prototypowym.
W zorientowanym obiektowo języku zorientowanym na ogół stan jest przenoszony przez instancje, metody są przenoszone przez klasy, a dziedziczenie ma jedynie strukturę i zachowanie. W ECMAScript stan i metody są przenoszone przez obiekty, a struktura, zachowanie i stan są dziedziczone.
Prototyp to obiekt służący do implementacji dziedziczenia struktury, stanu i zachowania w ECMAScript. Kiedy konstruktor tworzy obiekt, obiekt ten domyślnie odwołuje się do powiązanego z nim prototypu konstruktora w celu rozstrzygania odwołań do właściwości. Powiązany prototyp konstruktora może być przywoływany przez wyrażenie programu konstruktor. Prototyp, a właściwości dodane do prototypu obiektu są współdzielone, poprzez dziedziczenie, przez wszystkie obiekty współużytkujące prototyp.