JSON Nedir?
• JSON,JavaScript Object Notation anlamına gelir.
• Official Website : http://json.org
• Online JSON Parser : http://json.parser.online.fr/beta
• Bu format Douglas Crockford tarafından belirlendi.
• JSON dosya adı uzantısı .json’dur.
• JSON Internet Media Type : ‘application/json’
• The Uniform Type Identifier is public.json
• JSON
– Insan tarafından okunabilir.
– Veri depolamak e değiş-tokuş etmek için bir sözdizimidir.
– Dil bağımsız bir veri formatıdır.
– “Self-Describing” ve anlaşılması kolay.
– JSON JavaScript sözdizimi kullanır ama JSON format metin tabanlıdır. XML gibi…
• Okunabilir ve veri formatı olarak her programlama diliyle kullanılılabilirdir.
• API ve Config için kullanılır.
7.
JSON Sözdizimi
• Verilername/value ikilisinde oluşur.
• Veriler virgülle ayrılmıştır.
• Küme araçları(Curly Braces) nesneleri tutar.
• Köşeli parantezler(Square Brackets) dizileri tutar.
• JSON'un yaygın bir kullanımı, verileri bir web sunucusundan okumak ve bir web sayfasında
görüntülemektir.
8.
JSON vs. XML
•JSON daha kısadır.
• JSON, bitiş etiketini kullanmaz.
• JSON dizileri destekler.
• JSON'un görüntüleme yeteneği yok.
• Native nesne desteği.
• Her ikisi de 'kendi kendini tanımlayan', yani değerlerin adlandırıldığı anlamına gelir.
• Her ikisi de 'insan tarafından okunabilir’.
• Her ikisi de hiyerarşiktir. (yani değerleri bir başka değer içinde tutabilirsiniz.)
• Her ikisi de ayrıştırılabilir ve birçok programlama dili tarafından kullanılabilir.
• JSON daha az ayrıntılıdır, bu nedenle insanlar için kesinlikle daha hızlı okunabilir.
• JSON, JavaScript'teki eval() prosedürü kullanılarak basit bir şekilde ayrıştırılabilir.
• JSON, {her öğenin kendi adına sahip olmadığı} dizileri içerir.
• Hem JSON hem de XML bir XMLHttpRequest ile getirilebilir
9.
JSON vs. XML
•XML dizi verilerini desteklemez.
• XML, JSON'dan biraz daha karmaşıktır.
• XML, bir öğenin başında ve sonunda bir etiket adı bulunan açılı parantezler kullanır:
– JSON, adı yalnızca öğenin başında olan dalgalı parantezler kullanır.
• XML'de bir öğe için istediğiniz herhangi bir adı kullanabilirsiniz, JSON'da javascript'ten ayrılmış(reserved)
kelimeleri kullanamazsınız.
• XML, bir biçimlendirme dili olduğu için verileri görüntüleme yeteneği sağlar.
• Herhangi bir veri türü kavramı sağlamaz. Tür bilgisi eklemek için XML Şemasına güvenilmelidir.
10.
JSON vs. XML
•İkisi de basit ve açık.
• Her ikisi de unicode'u destekler. Dolayısıyla Internationalization hem JSON hem de XML tarafından
desteklenir.
• Her ikisi de kendi kendini tanımlayan verileri temsil eder.
• Her ikisi de birlikte çalışabilir veya dilden bağımsızdır.
11.
JSON kullanımları
• JSON,tarayıcı uzantısı ve web siteleri içeren JavaScript tabanlı uygulama yazarken kullanılır.
• JSON formatı, yapılandırılmış verileri ağ bağlantısı üzerinden seri hale getirmek(serialization) ve
iletmek için kullanılır.
• JSON, esas olarak sunucu ve web uygulaması arasında veri iletmek için kullanılır.
• Web Servisler ve API'ler, herkese açık veriler sağlamak için JSON biçimini kullanır.
• JSON, modern programlama dilleriyle kullanılabilir.
BSON
• BSON :Binary JSON
• http://bsonspec.org/
• Lightweight
– Uzamsal(spatial) ek yükü minimumda tutmak, özellikle ağ üzerinden kullanıldığında herhangi bir
veri gösterimi formatı için önemlidir.
• Traversable
– BSON is designed to be traversed easily. This is a virtual property in its role as the primary data
representation for MongoDB.
• Efficient
– Encoding data to BSON and decoding from BSON can be performed very quickly in most
languages due to the use of C data types.
14.
MongoDB BSON’ı NasılKullanır?
• MongoDB, “dökümanlar" için veri depolama ve ağ aktarım biçimi olarak BSON'u kullanır.
• Basit veri yapılarını ve ilişkisel dizileri(associative arrays) temsil etmek için binary bir formdur.
Squiggles, Squares, Colons,Commas
• Dalgalı parantezler 'kapsayıcı' görevi görür.
– {...}
• Köşeli parantezler dizileri tutar.
– [...]
• İsimler ve değerler iki nokta üst üste ile ayrılır.
– name:value
• Dizi öğeleri virgülle ayrılır.
– [member1, member2]
23.
JSON Döküman Doğrulama
•JSON’da Well-Formedness kontrolü
• JSON Dökümanlarını JSON Şemalarına karşı doğrulama
• JSON Şemalarını Şartname’ye(Specification) göre doğrulama
24.
Well-Formedness Kontrolü
• JSONbelgesinin JSON belirtimine uyup uymadığını kontrol edin!
• ECMA-404 JSON Veri Değişim Standardı
– http://json.org
JSON Şemasını İlişkilendir
•Şemayı JSON Dökümana ilişkilendir.
– Doğrudan JSON dökümanında $schema özelliğini kullanarak
– Uygulama ayarlarında
33.
JSON Schema Doğrulamak
•well-formedness Kontrolü
• The Internet Engineering Task Force(IETF) Specification’e Göre Doğrulamak
34.
Schematron ile JSON
Doğrulamak
•JSON Şemasını kullanarak JSON yapısını belirtin.
• Schematron kullanarak ortak kısıtlamalar ve özel kurallar.
• https://schematron.com
Querying ve Transforming
•JSON Pointer, JSONiq veya XPath kullanarak sorgulamak
• JSON'u JavaScript, XSLT, XQuery kullanarak dönüştürmek
38.
JSON Pointer
Bir JSONbelgesindeki belirli bir değeri tanımlamak için kullanılır.
#/employees/0/email
İlk çalışan emaili ile eşleşir.
Specification
https://tools.ietf.org/html/rfc6901
XPath
• XML dökümanlarınısorgulamak için güçlü dildir.
• JSON için de uygulamalar tarafından benimsenmiştir.
/employees[2]/email
2. çalışan emaili ile eşleşir
41.
JSON'u JavaScript ileişleyin
• JSON belgelerini işlemenin en popüler yolu.
• Birden çok library
var json = '{"name":”John Doe”, "age":42}’;
obj = JSON.parse(json);
console.log(obj.name); // Result John Doe
console.log(obj.age); // Result 42
42.
XSLT/XQuery Kullanarak
Dönüştürme
• JSONdökümanlarını farklı biçimlere dönüştürür.
• JSON dökümanları işlemek için farklı fonksiyonlar :
– json-doc($href as xs:string?) as item()?
– json-to-xml($json-text as xs:string?) as document-node()?
43.
Converting JSON Documents
•JSON'dan XML'e ve XML'den JSON’a
• XSLT kullanarak dönüştürme
• Online Converters
XML'den JSON'a Dönüştürme
Ayrıntıları
•XML nitelikleri özelliklere dönüştürülür:
<person id="1"/> {"person": {"id": 1}}
• Aynı ada sahip birden çok öğe bir diziye dönüştürülür.
<person/> <person/> "person": ["",""]
• Karışık içerikteki metin bir #text özelliğine dönüştürülür.
<p>This is an <b>example</b>!</p>
p": {"#text": "This is an", "b": "example", "#text1": "!"}
47.
XSLT Kullanarak Dönüştürme
•XSLT kullanarak XML'yi JSON'a dönüştüren library
– https://github.com/bramstein/xsltjson
• JSON için XSLT Spesifikasyonu
– http://www.w3.org/TR/xslt-30/#json