6. 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
• Veriler name/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.
13. 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ıl Kullanı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.
19. 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]
26. JSON Schema
JSON Şeması, JSON dökümanlarına açıklama eklemenize ve bunları
doğrulamanıza olanak tanıyan bir sözlüktür.
http://json-schema.org
27. JSON Schema Tanımlamak
• XML Şeması, RNG veya DTD'ye benzer
• JSON ile yazıldı
• JSON verilerinin yapısını tanımlamak için kullanılır
{”type”: ”string”} ”I'm a string”
JSON Schema JSON Instance
31. JSON Schema ile Doğrulamak
• JSON örneğinin tanımlara uyup uymadığını kontrol edin:
Beklenen string, gelen integer
[lastname] gerekirken [familyname]
Geçersiz email adresi
32. 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
37. Querying ve Transforming
• JSON Pointer, JSONiq veya XPath kullanarak sorgulamak
• JSON'u JavaScript, XSLT, XQuery kullanarak dönüştürmek
38. JSON Pointer
Bir JSON belgesindeki 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
40. 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 ile iş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
• JSON dö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
46. 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