- docx (Microsoft Word biçimi);
- pdf (Adobe formatı);
- mobi (yaygın olarak Amazon Kindle cihazlarında kullanılır);
- ve çok daha fazlası (ePub, djvu, fb2, vb.).
JSON
JavaScript Nesnesi Gösterimi. Bu format hakkında zaten biraz bilgi sahibisiniz! Bu derste bunun hakkında konuştuk ve JSON'da serileştirmeyi burada ele aldık . Adını bir nedenle aldı. JSON'a dönüştürülen Java nesneleri, aslında tam olarak JavaScript'teki nesneler gibi görünür. Nesnemizi anlamak için JavaScript bilmenize gerek yok:
{
"title": "War and Peace",
"author": "Lev Tolstoy",
"year": 1869
}
Tek bir nesne göndermekle sınırlı değiliz. JSON biçimi ayrıca bir dizi nesneyi de temsil edebilir:
[
{
"title": "War and Peace",
"author": "Lev Tolstoy",
"year": 1869
},
{
"title": "Demons",
"author": "Fyodor Dostoyevsky",
"year": 1872
},
{
"title": "The Seagull",
"author": "Anton Chekhov",
"year": 1896
}
]
JSON, JavaScript nesnelerini temsil ettiğinden, aşağıdaki JavaScript veri biçimlerini destekler:
- Teller;
- sayılar;
- nesneler;
- diziler;
- mantıksal değerler (doğru ve yanlış);
- hükümsüz.
-
İnsan tarafından okunabilir format. Son kullanıcınız insansa bu bariz bir avantajdır. Örneğin, sunucunuzun bir uçuş programı içeren bir veritabanı olduğunu varsayalım. Evinde bilgisayarının başında oturan bir insan müşteri, bir web uygulaması kullanarak bu veri tabanından veri talep ediyor. Verileri onun anlayabileceği bir biçimde sağlamanız gerektiğinden, JSON harika bir çözümdür.
-
Basitlik. Çok basit :) Yukarıda iki JSON dosyası örneği verdik. JavaScript hakkında bir şey duymamış olsanız bile (JavaScript nesnelerini bırakın), orada açıklanan nesne türlerini kolayca anlayabilirsiniz.
JSON belgelerinin tamamı, birkaç resim içeren bir web sayfasından oluşur. -
Yaygın kullanım. JavaScript baskın ön uç dilidir ve kendi gereksinimleri vardır. JSON kullanmak bir zorunluluktur. Bu nedenle, çok sayıda web hizmeti, veri değişim formatı olarak JSON'u kullanır. Her modern IDE, JSON biçimini destekler (IntelliJ IDEA dahil). JSON ile çalışmayı sağlamak için her türden programlama dili için bir sürü kitaplık yazılmıştır.
YAML
Başlangıçta YAML, "Yine Başka Bir Biçimlendirme Dili" anlamına geliyordu. Başladığında, XML'e rakip olarak konumlandırıldı. Şimdi, zaman geçtikçe YAML, "YAML İşaretleme Dili Değildir" anlamına gelir. Tam olarak nedir? Bir bilgisayar oyunundaki karakterleri temsil etmek için 3 sınıf oluşturmamız gerektiğini düşünelim: Savaşçı, Büyücü ve Hırsız. Şu özelliklere sahip olacaklar: güç, çeviklik, dayanıklılık, bir dizi silah. Sınıflarımızı açıklayan bir YAML dosyası şöyle görünür:
classes:
class-1:
title: Warrior
power: 8
agility: 4
stamina: 7
weapons:
- sword
- spear
class-2:
title: Mage
power: 5
agility: 7
stamina: 5
weapons:
- magic staff
class-3:
title: Thief
power: 6
agility: 6
stamina: 5
weapons:
- dagger
- poison
Bir YAML dosyasının bir ağaç yapısı vardır: bazı öğeler diğerlerinin içinde iç içe geçmiştir. Her seviyeyi belirtmek için kullandığımız belirli sayıda boşluk kullanarak yuvalamayı kontrol edebiliriz. YAML formatının avantajları nelerdir?
-
İnsan tarafından okunabilir. Yine, bir YAML dosyasını açıklama olmadan görseniz bile, tanımladığı nesneleri kolayca anlayabilirsiniz. YAML o kadar okunabilir ki yaml.org web sitesi sıradan bir YAML dosyası :)
-
kompaktlık Dosya yapısı boşluklar kullanılarak oluşturulur: parantez veya tırnak işareti kullanmaya gerek yoktur.
-
Programlama dilleri için yerel veri yapıları desteği. YAML'nin JSON ve diğer birçok biçime göre en büyük avantajı, çeşitli veri yapılarını desteklemesidir. Onlar içerir:
-
!!map
Yinelenenleri olmayan, sıralanmamış bir anahtar-değer çiftleri kümesi; -
!omap
Yinelenenleri olmayan sıralı bir anahtar-değer çiftleri dizisi; -
!!çiftler:
Yinelemeleri olabilen sıralı bir anahtar/değer çiftleri dizisi; - !!set
Birbirine eşit olmayan sırasız bir değerler dizisi; - !seq
Bir rastgele değerler dizisi;
Bu yapılardan bazılarını Java'dan tanıyacaksınız! :) Bu, programlama dillerinden çeşitli veri yapılarının YAML'de serileştirilebileceği anlamına gelir.
-
-
Çapa ve takma ad kullanabilme
Bu işaretçiler, bir YAML dosyasındaki bazı öğeleri tanımlamanıza ve ardından tekrar tekrar meydana gelirse dosyanın geri kalanında ona başvurmanıza olanak tanır. & sembolü kullanılarak bir bağlantı oluşturulur ve * kullanılarak bir takma ad oluşturulur .
Leo Tolstoy'un kitaplarını anlatan bir dosyamız olduğunu varsayalım. Her kitap için yazarın adını yazmaktan kaçınmak için, basitçe aslan çapasını yaratırız ve ihtiyacımız olduğunda bir takma ad kullanarak ona başvururuz:
books: book-1: title: War and Peace author: &leo Leo Tolstoy year: 1869 book-2: title: Anna Karenina author: *leo year: 1873 book-3: title: Family Happiness author: *leo year: 1859
Bu dosya ayrıştırıldığında, takma adlarımızın bulunduğu doğru yerlerde "Leo Tolstoy" değeri değiştirilir.
- YAML, verileri diğer biçimlerde gömebilir. Örneğin, JSON:
books: [ { "title": "War and Peace", "author": "Leo Tolstoy", "year": 1869 }, { "title": "Anna Karenina", "author": "Leo Tolstoy", "year": 1873 }, { "title": "Family Happiness", "author": "Leo Tolstoy", "year": 1859 } ]
Diğer serileştirme biçimleri
xml
Bu biçim, bir etiket ağacına dayalıdır.
<book>
<title>Harry Potter and the Philosopher’s Stone</title>
<author>J. K. Rowling</author>
<year>1997</year>
</book>
Her öğe bir açılış ve kapanış etiketinden (<> ve </>) oluşur. Her eleman iç içe elemanlara sahip olabilir. XML, JSON ve YAML kadar iyi olan yaygın bir biçimdir (eğer gerçek projelerden bahsediyorsak). XML hakkında ayrı bir dersimiz var .
BSON (ikili JSON)
Adından da anlaşılacağı gibi BSON, JSON'a çok benzer, ancak insanlar tarafından okunamaz ve ikili veri kullanır. Sonuç olarak, görüntüleri ve diğer ekleri depolamak ve aktarmak için çok iyidir. Ayrıca BSON, JSON'da bulunmayan bazı veri türlerini destekler. Örneğin, bir BSON dosyası bir tarih (milisaniye biçiminde) veya hatta bir parça JavaScript kodu içerebilir. Popüler MongoDB NoSQL veritabanı, bilgileri BSON biçiminde depolar.Konum tabanlı protokol
Bazı durumlarda, gönderilen veri miktarını büyük ölçüde azaltmamız gerekir (örneğin, çok fazla verimiz varsa ve yükü azaltmamız gerekiyorsa). Bu durumda, konum tabanlı protokolü kullanabiliriz, yani parametrelerin adları olmadan parametre değerleri gönderebiliriz.
"Leo Tolstoy" | "Anna Karenina" | 1873
Bu formattaki veriler, tam bir JSON dosyasından birkaç kat daha az yer kaplar. Elbette başka serileştirme formatları da var ama şu anda hepsini bilmenize gerek yok :) Uygulama geliştirirken mevcut endüstri standardı formatlara aşina olmanız ve bunların avantajlarını ve birinden ne kadar farklı olduklarını hatırlamanız iyi olur. bir diğer. Ve bununla dersimiz sona eriyor :) Bugün birkaç görev çözmeyi unutmayın! Bir sonrakine kadar! :)
GO TO FULL VERSION