ON JSON : XML'e Yağsız Alternatif
JSON, dağıtılmış uygulamalar ve hizmetler üretmeyi çok daha kolay hale getiren kişiler tarafından yaygın bir şekilde benimsenmiştir. JSON için resmi İnternet medyası türü application/json
RFC 4627
. JSON dosya adları uzantıyı kullanır .json
.
► JavaScript Nesne Gösterimi ( JSON
) hafif, metin tabanlı, dilden bağımsız bir veri değişim biçimidir. JSON, herhangi bir Programlama dilinde yazılmış uygulamalar arasında veri alışverişi için kullanılmıştır.
JSON nesnesi, JSON metinlerini ayrıştırmak ve oluşturmak için kullanılan iki işlevi ayrıştırıp dizgi içeren tek bir nesnedir.
- JSON.stringify, aşağıdaki JSON dilbilgisine uyan bir Dize üretir.
- JSON.parse, JSON dilbilgisine uyan bir String'i kabul eder.
ParseJSON yöntemi Fourth Edition of ECMAScript
. Bu arada, json.org'da bir JavaScript uygulaması bulunmaktadır.
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'in alt kümesidir. Javascript , ECMAScript Programlama Dili Standardından türetilmiştir.
► ECMAScript
ECMAScript dünyanın en yaygın kullanılan genel amaçlı programlama dillerinden biri haline gelmiştir. En iyi web tarayıcılarına gömülü dil olarak bilinir, ancak sunucu ve gömülü uygulamalar için de yaygın olarak benimsenmiştir. ECMAScript, en iyi bilinen JavaScript
(Netscape Communications)) ve JScript
(Microsoft Corporation) gibi çeşitli kaynak teknolojilerine dayanmaktadır . 1994'ten önce ECMA, "Avrupa Bilgisayar Üreticileri Birliği" olarak bilinmesine rağmen, kuruluşun küreselleştiği 1994'ten sonra "ticari marka" "Ecma" tarihi nedenlerden ötürü tutuldu.
ECMAScript dildir, ancak JavaScript, JScript ve hatta ActionScript çağrılır "Dialects"
.
Lehçeler aynı dilden türetilmiştir. Aynı dilden türetildikleri için birbirlerine oldukça benzerler, ancak bazı değişikliklerden geçtiler. Bir lehçe, dilin kendisinin bir varyasyonudur. Tek bir dilden türetilmiştir.
- SQL Dili - Bazı değişiklikler veya işlevler eklenmiş olan Hibernate MySQL Dialect, Oracle Dialect, ..
Kullanıcılarınızın tarayıcısı ve bilgisayarı hakkında bilgi.
navigator.appName // "Netscape"
ECMAScript, JavaScript'in temelini oluşturan komut dosyası dilidir. .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.
NOT « Çalışma tamamlanmadığı için ECMAScript'in 4. baskısı yayınlanmamıştır .
JSON, yapılandırılmış verilerin taşınabilir temsili için küçük bir biçimlendirme kuralı kümesi tanımlar.
► Anahtar değerler belirtilmelidir, anahtarlar için yalnızca Dizgilere izin verilir. String dışında bir kullanırsanız, String'e dönüştürülür. Ancak Dize dışındaki anahtarların kullanılması önerilmez. Böyle bir örnek kontrol edin - { 'key':'val' }
overRFC 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 Dizeleri "ile değil" ile tırnak içine alınmalıdır. Bir dize C veya Java dizgisine çok benzer. Dizeler çift tırnak içine alınmalıdır.
- Değişmez değerler, betiğinizde tam olarak sağladığınız değişkenler değil sabit değerlerdir.
- Bir dize, çoğu programlama dilinde kullanılan aynı gösterim olan ters eğik çizgi çıkışıyla tırnak içine alınmış sıfır veya daha fazla karakterden oluşan bir dizidir.
- 🔫 - Dizede Özel Sembollere izin verilir ancak kullanılması önerilmez.
- \ "- Özel karakterler kaçabilir. Ancak tek tırnaktan kaçmak için tavsiye edilmez. Katı modda fırlar ve Hata -
SyntaxError: Unexpected token ' in JSON
{ "Hai\" \n Team 🔫":5, "Bye \'": 7 }
Çevrimiçi JSON Edtions üzerinden bu kodu kontrol edin .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"}
Nesne Özellik erişimcileri , nokta gösterimini veya köşeli ayraç gösterimini kullanarak bir nesnenin özelliklerine erişim sağlar.
► Daha sınırlı bir değer aralığınız vardır (örn. Fonksiyona izin verilmez). Değer, çift tırnak, sayı, boole, null, nesne veya dizi içindeki bir dize olabilir. Bu yapılar yuvalanabilir.
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 Standardının en popüler uygulamasıdır. Javascript'in temel özellikleri ECMAScript standardını temel alır, ancak Javascript ayrıca ECMA spesifikasyonlarında / standardında olmayan başka ek özelliklere de sahiptir. Her tarayıcının bir JavaScript tercümanı vardır.
JavaScript, dinamik olarak yazılmış bir dildir. Bu, değişkeni bildirirken bir veri türünü belirtmeniz gerekmediği ve komut dosyası yürütülürken veri türlerinin gerektiği gibi otomatik olarak dönüştürüldüğü anlamına gelir.
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
Bir nesne yapısı, sıfır veya daha fazla ad / değer çiftini (veya üyeyi) çevreleyen bir çift süslü parantez olarak temsil edilir. Ad bir dizedir. Her addan sonra, adı değerden ayıran tek bir iki nokta üst üste gelir. Tek bir virgül, bir değeri aşağıdaki addan ayırır. Bir nesnenin içindeki adlar benzersiz olmalıdır.
ECMAScript prototip tabanlı kalıtımı destekler. Her kurucunun ilişkili bir prototipi vardır ve bu kurucu tarafından oluşturulan her nesnenin, kurucusuyla ilişkili prototip (nesnenin prototipi denir) için örtük bir başvurusu vardır. Ayrıca, bir prototip, prototipine null olmayan örtük bir referansa sahip olabilir; buna prototip zinciri denir.
Sınıfa dayalı nesne yönelimli bir dilde, genel olarak, durum örneklere göre taşınır, yöntemler sınıflar tarafından taşınır ve kalıtım yalnızca yapı ve davranıştan ibarettir. ECMAScript'te durum ve yöntemler nesneler tarafından taşınır ve yapı, davranış ve durumun tümü miras alınır.
Prototip, ECMAScript'te yapı, durum ve davranış mirasını uygulamak için kullanılan bir nesnedir. Bir kurucu bir nesne oluşturduğunda, o nesne, özellik referanslarını çözümlemek amacıyla kurucunun ilişkili prototipine dolaylı olarak başvurur. Yapıcı ile ilişkili prototip, program ifadesi constructor.prototype tarafından başvurulabilir ve bir nesnenin prototipine eklenen özellikler, miras yoluyla, prototipi paylaşan tüm nesneler tarafından paylaşılır.