YAML - Hızlı Kılavuz

YAML İşaretleme Dili, kullanıcının verilerle ilgili beklentilerini karşılayan bir veri serileştirme dilidir. İnsan dostu olacak şekilde tasarlanmıştır ve diğer programlama dilleriyle mükemmel şekilde çalışır. Verileri yönetmek için kullanışlıdır ve Unicode yazdırılabilir karakterler içerir. Bu bölüm size YAML'ye giriş yapacak ve özellikleri hakkında size bir fikir verecektir.

Biçim

Aşağıda gösterilen metni düşünün -

Quick brown fox jumped over the lazy dog.

Bunun için YAML metni aşağıda gösterildiği gibi temsil edilecektir -

yaml.load(Quick brown fox jumped over the lazy dog.)
>>'Quick brown fox jumped over the lazy dog.'

YAML'nin değeri dize biçiminde aldığını ve yukarıda belirtildiği gibi çıktıyı temsil ettiğini unutmayın.

Örnekler

Aşağıdaki örneklerin yardımıyla YAML'deki formatları anlayalım -

3.1415926 değerine sahip olan "pi" nin aşağıdaki nokta numarasını düşünün. YAML'de, aşağıda gösterildiği gibi kayan bir sayı olarak temsil edilir -

>>> yaml.load('3.1415926536')
3.1415926536

Diyelim ki, aşağıda belirtildiği gibi belirli veri yapısına birden fazla değer yüklenecek -

eggs
ham
spam
French basil salmon terrine

Bunu YAML'ye yüklediğinizde, değerler bir liste biçimi olan bir dizi veri yapısında alınır. Çıktı aşağıda gösterildiği gibidir -

>>> yaml.load('''
   - eggs
   - ham
   - spam
   - French basil salmon terrine
   ''')
['eggs', 'ham', 'spam', 'French basil salmon terrine']

Özellikleri

YAML, veri odaklı dili belge biçimlendirmesiyle ayırt etmek için önemli yapıya sahip bir biçimlendirme dili içerir. YAML'nin tasarım hedefleri ve özellikleri aşağıda verilmiştir -

  • Çevik metodolojinin yerel veri yapılarını ve Perl, Python, PHP, Ruby ve JavaScript gibi dillerini eşleştirir

  • YAML verileri programlama dilleri arasında taşınabilir

  • Veri tutarlı veri modeli içerir

  • İnsanlar tarafından kolayca okunabilir

  • Tek yönlü işlemeyi destekler

  • Uygulama ve kullanım kolaylığı

Artık YAML ve özellikleri hakkında bir fikriniz olduğuna göre, sözdizimi ve diğer işlemlerle temellerini öğrenelim. YAML'nin insan tarafından okunabilir yapılandırılmış bir format içerdiğini unutmayın.

YAML dosyası oluşturma kuralları

YAML'de bir dosya oluştururken, aşağıdaki temel kuralları hatırlamalısınız -

  • YAML büyük / küçük harfe duyarlıdır

  • Dosyaların olması gerekir .yaml uzantı olarak

  • YAML, YAML dosyaları oluşturulurken sekme kullanımına izin vermez; bunun yerine boşluklara izin verilir

YAML Dosyasının Temel Bileşenleri

YAML'nin temel bileşenleri aşağıda açıklanmıştır -

Geleneksel Blok Biçimi

Bu blok biçimi kullanır hyphen+spacebelirli bir listede yeni bir öğeye başlamak için. Aşağıda gösterilen örneği inceleyin -

--- # Favorite movies
 - Casablanca
 - North by Northwest
 - The Man Who Wasn't There

Inline Format

Satır içi format ile sınırlandırılmıştır comma and spaceve öğeler JSON içine alınır. Aşağıda gösterilen örneği inceleyin -

--- # Shopping list
   [milk, groceries, eggs, juice, fruits]

Folded Text

Katlanmış metin, yeni satırları boşluklara dönüştürür ve baştaki boşluğu kaldırır. Aşağıda gösterilen örneği inceleyin -

- {name: John Smith, age: 33}
- name: Mary Smith
  age: 27

YAML'nin tüm temel kurallarını takip eden yapı aşağıda gösterilmiştir -

men: [John Smith, Bill Jones]
women:
  - Mary Smith
  - Susan Williams

YAML Temel Öğelerinin Özeti

  • YAML temel öğelerinin özeti burada verilmiştir: YAML'deki yorumlar (#) karakter.

  • Yorumlar, diğer simgelerden boşluklarla ayrılmalıdır.

  • Yapıyı belirtmek için boşluk girintisi kullanılır.

  • YAML dosyaları için girinti olarak sekmeler dahil edilmez.

  • Liste üyeleri önde gelen bir kısa çizgi ile gösterilir (-).

  • Liste üyeleri köşeli parantez içine alınır ve virgülle ayrılır.

  • İlişkilendirilebilir diziler iki nokta üst üste kullanılarak temsil edilir ( : )anahtar değer çifti biçiminde. Küme parantez içine alınırlar{}.

  • Tek akışlı birden çok belge 3 kısa çizgiyle (---) ayrılır.

  • Her dosyada tekrarlanan düğümler başlangıçta bir "ve" işareti (&) ve yıldız işaretiyle (*) sonra işaretleyin.

  • YAML her zaman liste ayırıcıları olarak iki nokta üst üste ve virgül ve ardından skaler değerlere sahip boşluk gerektirir.

  • Düğümler bir ünlem işareti ile etiketlenmelidir (!) veya çift ünlem işareti (!!), ardından bir URI veya URL'ye genişletilebilen dize.

Girinti ve ayırma, herhangi bir programlama dilini öğrenirken iki ana kavramdır. Bu bölüm, YAML ile ilgili bu iki kavramdan ayrıntılı olarak bahsetmektedir.

YAML'nin girintisi

YAML herhangi bir zorunlu alan içermez. Dahası, tutarlı olmaya gerek yoktur. Geçerli YAML girintisi aşağıda gösterilmektedir -

a:
   b:
      - c
      -  d
      - e
f:
      "ghi"
  • YAML'de girinti ile çalışırken aşağıdaki kuralları hatırlamalısınız: Akış blokları, çevreleyen mevcut blok düzeyiyle en azından bazı boşluklarla tasarlanmalıdır.

  • YAML'nin akış içeriği birden çok satıra yayılır. Akış içeriğinin başlangıcı,{ veya [.

  • Blok liste öğeleri, - girintinin bir parçası olarak kabul edildiğinden, çevreleyen blok düzeyiyle aynı girintiyi içerir.

Amaçlanan Blok Örneği

Örneklerle girintiyi gösteren aşağıdaki kodu inceleyin -

--- !clarkevans.com/^invoice
invoice: 34843
date   : 2001-01-23
bill-to: &id001
   given  : Chris
   family : Dumars
   address:
      lines: |
            458 Walkman Dr.
            Suite #292
      city    : Royal Oak
      state   : MI
      postal  : 48046
ship-to: *id001
product:
    - sku         : BL394D
      quantity    : 4
      description : Basketball
      price       : 450.00
   - sku         : BL4438H
      quantity    : 1
      description : Super Hoop
      price       : 2392.00
tax  : 251.42
total: 4443.52
comments: >
    Late afternoon is best.
    Backup contact is Nancy
    Billsmer @ 338-4338.

Dizelerin Ayrılması

Dizeler çift tırnaklı dizge kullanılarak ayrılır. Belirli bir dizedeki yeni satır karakterlerinden kaçarsanız, tamamen kaldırılır ve boşluk değerine çevrilir.

Misal

Bu örnekte, dizge veri türü ile bir dizi yapısı olarak listelenen hayvanların listelemesine odaklandık. Her yeni öğe, önek olarak belirtildiği gibi bir kısa çizgi önekiyle listelenir.

-
 - Cat
 - Dog
 - Goldfish
-
 - Python
 - Lion
 - Tiger

YAML'de dize temsilini açıklamak için başka bir örnek aşağıda belirtilmiştir.

errors:
      messages:
         already_confirmed: "was already confirmed, please try signing in"
         confirmation_period_expired: "needs to be confirmed within %{period}, please request a new one"
         expired: "has expired, please request a new one"
         not_found: "not found"
         not_locked: "was not locked"
         not_saved:
            one: "1 error prohibited this %{resource} from being saved:"
            other: "%{count} errors prohibited this %{resource} from being saved:"

Bu örnek, bir kullanıcının sadece anahtar yönden bahsederek kullanabileceği ve değerleri buna göre getirebileceği hata mesajları kümesine atıfta bulunmaktadır. Bu YAML modeli, YAML'de yeni olan kullanıcı tarafından anlaşılabilen JSON yapısını takip eder.

Artık YAML'nin sözdizimi ve temelleri konusunda rahat olduğunuza göre, ayrıntılarına daha fazla girelim. Bu bölümde, YAML'de yorumları nasıl kullanacağımızı göreceğiz.

YAML supports single line comments. Yapısı aşağıda bir örnek yardımıyla açıklanmıştır -

# this is single line comment.

YAML does not support multi line comments. Birden çok satır için yorum sağlamak istiyorsanız, bunu aşağıdaki örnekte gösterildiği gibi yapabilirsiniz -

# this
# is a multiple
# line comment

Yorumların Özellikleri

YAML'deki yorumların özellikleri aşağıda verilmiştir -

  • Yorumlanmış bir blok, yürütme sırasında atlanır.

  • Yorumlar, belirtilen kod bloğu için açıklama eklemeye yardımcı olur.

  • Yorumlar skalarlar içinde görünmemelidir.

  • YAML, karma sembolünden (#) kaçmanın herhangi bir yolunu içermez, bu nedenle çok satırlı dizede, bu nedenle yorumu ham dize değerinden ayırmanın bir yolu yoktur.

Bir koleksiyondaki yorumlar aşağıda gösterilmektedir -

key: #comment 1
   - value line 1
   #comment 2
   - value line 2
   #comment 3
   - value line 3

YAML bloklarına yorum yapmak için kısayol tuşu kombinasyonu Ctrl+Q.

Eğer kullanıyorsanız Sublime Text editor, bloğu yorumlama adımları aşağıda belirtilmiştir -

Bloğu seçin. Linux ve Windows'ta “CTRL + /” ve Mac işletim sistemi için “CMD + /” kullanın. Bloğu yürütün.

Kullanıyorsanız, aynı adımların geçerli olduğunu unutmayın. Visual Studio Code Editor. Her zaman kullanılması tavsiye edilirSublime Text Editor Çoğu işletim sistemi tarafından desteklendiği şekliyle YAML dosyaları oluşturmak için ve geliştirici dostu kısayol tuşları içerir.

YAML, kapsam için girinti kullanan blok koleksiyonlarını içerir. Burada her giriş yeni bir satırla başlar. Koleksiyonlardaki blok dizileri her girişi birdash and space(-). YAML'de, blok koleksiyon stilleri herhangi bir belirli gösterge ile gösterilmez. YAML'de blok toplama, bunlara dahil edilen anahtar değer çiftinin bir tanımlamasıyla diğer skaler büyüklüklerden ayırt edilebilir.

Eşlemeler, JSON yapısına dahil edilen anahtar değerinin temsilidir. Çok dilli destek sistemlerinde ve mobil uygulamalarda API oluşturulmasında sıklıkla kullanılır. Eşlemeler, anahtar değer çifti temsilini kullanarakcolon and space (:).

Örnekler

Bir skalar dizisi örneğini, örneğin aşağıda gösterildiği gibi top oyuncularının bir listesini düşünün -

- Mark Joseph
- James Stephen
- Ken Griffey

Aşağıdaki örnek, skalerleri skalarlarla eşlemeyi gösterir -

hr: 87
avg: 0.298
rbi: 149

Aşağıdaki örnek, skalerleri dizilere eşlemeyi gösterir -

European:
- Boston Red Sox
- Detroit Tigers
- New York Yankees

national:
- New York Mets
- Chicago Cubs
- Atlanta Braves

Koleksiyonlar, aşağıda gösterilen sıra eşlemeleri için kullanılabilir -

-
   name: Mark Joseph
   hr: 87
   avg: 0.278
-
   name: James Stephen
   hr: 63
   avg: 0.288

Koleksiyonlarla YAML, alanı belirtmek için girinti kullanmak yerine açık göstergeler kullanan akış stillerini içerir. Koleksiyonlardaki akış dizisi, köşeli parantez içinde virgülle ayrılmış liste olarak yazılır. Senfoni gibi PHP çerçevelerine dahil edilen koleksiyon için en iyi örnek.

[PHP, Perl, Python]

Bu koleksiyonlar belgelerde saklanır. YAML'de belgelerin ayrılması, üç kısa çizgi veya kısa çizgiyle (---) gösterilir. Belgenin sonu üç nokta (…) ile işaretlenmiştir.

YAML'de belgelerin ayrılması, üç tire (---) ile gösterilir. Belgenin sonu üç noktayla (…) temsil edilir.

Belge temsili, aşağıda belirtilen yapı biçimi olarak adlandırılır -

# Ranking of 1998 home runs
---
- Mark Joseph
- James Stephen
- Ken Griffey 

# Team ranking
---
- Chicago Cubs
- St Louis Cardinals

Bir boşluk kombinasyonuna sahip bir soru işareti, yapıda karmaşık bir eşleştirmeyi gösterir. Bir blok koleksiyonunda, bir kullanıcı bir tire, iki nokta ve soru işareti içeren bir yapı içerebilir. Aşağıdaki örnek, diziler arasındaki eşlemeyi gösterir -

- 2001-07-23
? [ New York Yankees,Atlanta Braves ]
: [ 2001-07-02, 2001-08-12, 2001-08-14]

YAML'deki skalarlar, şu şekilde belirtilen bir değişmez tür kullanılarak blok biçiminde yazılır (|). Satır sonu sayısını gösterir. YAML'de skalarlar katlanmış tarzda yazılır (>) burada her satır, bir ile biten katlanmış bir alanı gösterir empty line veya more indented hat.

Değişmez değerlerle korunan yeni satırlar aşağıda gösterilmiştir -

ASCII Art
--- |
\//||\/||
// || ||__

Katlanmış yeni satırlar için korunur more indented lines ve blank lines aşağıda gösterildiği gibi -

>
Sammy Sosa completed another
fine season with great stats.
63 Home Runs
0.288 Batting Average
What a year!

YAML akış skalerleri düz stilleri ve alıntılanmış stilleri içerir. Çift tırnaklı stil, çeşitli kaçış dizilerini içerir. Akış skalerleri birden çok satır içerebilir; bu yapıda satır sonları her zaman katlanır.

plain:
This unquoted scalar
spans many lines.
quoted: "So does this
quoted scalar.\n"

YAML'de, etiketsiz düğümler belirli bir uygulama türüyle belirtilir. Etiket özelliklerinin örnekleri genellikle şunu kullanır:seq, map ve strYAML etiket deposu türleri. Etiketler, aşağıda belirtilen örnekler olarak temsil edilmektedir -

Tamsayı etiketleri

Bu etiketler, içlerinde tamsayı değerleri içerir. Sayısal etiketler olarak da adlandırılırlar.

canonical: 12345
decimal: +12,345
sexagecimal: 3:25:45
octal: 014
hexadecimal: 0xC

Kayan nokta sayıları

Bu etiketler, ondalık ve üstel değerleri içerir. Üstel etiketler olarak da adlandırılırlar.

canonical: 1.23015e+3
exponential: 12.3015e+02
sexagecimal: 20:30.15
fixed: 1,230.15
negative infinity: -.inf
not a number: .NaN

Çeşitli Etiketler

İçlerine gömülü çeşitli tamsayı, kayan ve dize değerleri içerir. Bu nedenle, çeşitli etiketler olarak adlandırılır.

null: ~
true: y
false: n
string: '12345'

Aşağıdaki tam uzunluktaki örnek, JSON formatında dönüştürülürken veya işlenirken yardımcı olacak semboller ve çeşitli temsiller içeren YAML yapısını belirtir. Bu öznitelikler, JSON belgelerinde anahtar adları olarak da adlandırılır. Bu gösterimler güvenlik amacıyla oluşturulmuştur.

Yukarıdaki YAML biçimi, çeşitli diğer özniteliklere sahip varsayılanların, bağdaştırıcının ve ana bilgisayarın çeşitli özniteliklerini temsil eder. YAML ayrıca oluşturulan her dosyanın bir kaydını tutar ve bu da oluşturulan hata mesajlarının kaydını tutar. Belirtilen YAML dosyasını JSON biçiminde dönüştürürken, aşağıda belirtildiği gibi istenen bir çıktı elde ederiz -

defaults: &defaults
   adapter:  postgres
   host:     localhost

development:
   database: myapp_development
   <<: *defaults

test:
   database: myapp_test
   <<: *defaults

YAML'yi JSON formatına çevirelim ve çıktıyı kontrol edelim.

{
   "defaults": {
      "adapter": "postgres",
      "host": "localhost"
   },
   "development": {
      "database": "myapp_development",
      "adapter": "postgres",
      "host": "localhost"
   },
   "test": {
      "database": "myapp_test",
      "adapter": "postgres",
      "host": "localhost"
   }
}

Önek “<<: *” olan varsayılan anahtar, gerektiğinde aynı kod parçacığını tekrar tekrar yazmaya gerek kalmadan dahil edilir.

YAML, Proses akışı için standart bir prosedür izler. YAML'deki yerel veri yapısı, düğümler gibi basit gösterimleri içerir. Temsil Düğüm Grafiği olarak da adlandırılır.

Bir serileştirme ağacı oluşturmak için serileştirilen eşleme, sıra ve skaler büyüklükleri içerir. Serileştirme ile nesneler bayt akışı ile dönüştürülür.

Serileştirme olay ağacı, aşağıdaki diyagramda gösterildiği gibi karakter akışlarının sunumunun oluşturulmasına yardımcı olur.

Ters prosedür bayt akışını serileştirilmiş olay ağacına ayrıştırır. Daha sonra düğümler düğüm grafiğine dönüştürülür. Bu değerler daha sonra YAML yerel veri yapısına dönüştürülür. Aşağıdaki şekil bunu açıklıyor -

YAML'deki bilgiler iki şekilde kullanılır: machine processing ve human consumption. YAML'deki işlemci, yukarıda verilen diyagramdaki tamamlayıcı görünümler arasında bilgi dönüştürme prosedürü için bir araç olarak kullanılır. Bu bölüm, bir YAML işlemcisinin belirli bir uygulama içinde sağlaması gereken bilgi yapılarını açıklar.

YAML, veri nesnelerini seri biçimde temsil etmek için bir serileştirme prosedürü içerir. YAML bilgilerinin işlenmesi üç aşama içerir:Representation, Serialization, Presentation and parsing. Her birini ayrıntılı olarak tartışalım.

Temsil

YAML, üç tür düğüm kullanan veri yapısını temsil eder: sequence, mapping ve scalar.

Sıra

Sıra, anahtar değer çiftinin sırasız ilişkisini eşleyen sıralı giriş sayısını ifade eder. Perl veya Python dizi listesine karşılık gelir.

Aşağıda gösterilen kod bir dizi gösterimi örneğidir -

product:
   - sku         : BL394D
     quantity    : 4
     description : Football
     price       : 450.00
   - sku         : BL4438H
     quantity    : 1
     description : Super Hoop
     price       : 2392.00

Haritalama

Öte yandan eşleme, sözlük veri yapısını veya karma tabloyu temsil eder. Aynısı için bir örnek aşağıda belirtilmiştir -

batchLimit: 1000
threadCountLimit: 2
key: value
keyMapping: <What goes here?>

Skaler

Skalarlar, dizelerin, tam sayıların, tarihlerin ve atomik veri türlerinin standart değerlerini temsil eder. YAML'nin ayrıca veri tipi yapısını belirten düğümler içerdiğini unutmayın. Skalerler hakkında daha fazla bilgi için lütfen bu eğitimin 6. bölümüne bakın.

Serileştirme

YAML'de insan dostu anahtar sırasını ve çapa adlarını kolaylaştıran serileştirme işlemi gereklidir. Serileştirmenin sonucu bir YAML serileştirme ağacıdır. YAML verilerinin bir dizi olay çağrısı üretmek için çapraz geçiş yapılabilir.

Aşağıda bir serileştirme örneği verilmiştir -

consumer:
   class: 'AppBundle\Entity\consumer'
   attributes:
      filters: ['customer.search', 'customer.order', 'customer.boolean']
   collectionOperations:
      get:
         method: 'GET'
         normalization_context:
       groups: ['customer_list']
   itemOperations:
      get:
         method: 'GET'
         normalization_context:
            groups: ['customer_get']

Sunum

YAML serileştirmenin son çıktısına sunum adı verilir. İnsan dostu bir şekilde bir karakter akışını temsil eder. YAML işlemcisi, akış oluşturmak, girintiyi yönetmek ve içeriği biçimlendirmek için çeşitli sunum ayrıntılarını içerir. Bu eksiksiz süreç, kullanıcının tercihlerine göre yönlendirilir.

YAML sunum sürecine bir örnek, oluşturulan JSON değerinin sonucudur. Daha iyi anlamak için aşağıda verilen koda uyun -

{
   "consumer": {
      "class": "AppBundle\\Entity\\consumer",
      "attributes": {
         "filters": [
            "customer.search",
            "customer.order",
            "customer.boolean"
         ]
      },
      "collectionOperations": {
         "get": {
            "method": "GET",
            "normalization_context": {
               "groups": [
                  "customer_list"
               ]
            }
         }
      },
      "itemOperations": {
         "get": {
            "method": "GET",
            "normalization_context": {
               "groups": [
                  "customer_get"
               ]
            }
         }
      }
   }
}

Ayrıştırma

Ayrıştırma, ters sunum sürecidir; bir karakter akışı içerir ve bir dizi olay yaratır. Sunum sürecinde sunulan serileştirme olaylarına neden olan ayrıntıları atar. Ayrıştırma prosedürü hatalı biçimlendirilmiş girdi nedeniyle başarısız olabilir. Temelde YAML'nin iyi biçimlendirilmiş olup olmadığını kontrol etmek için bir prosedürdür.

Aşağıda belirtilen bir YAML örneğini düşünün -

---
   environment: production
   classes:
      nfs::server:
         exports:
            - /srv/share1
            - /srv/share3
   parameters:
      paramter1

Üç kısa çizgiyle, daha sonra içinde tanımlanan çeşitli niteliklerle belgenin başlangıcını temsil eder.

YAML lint, YAML'nin çevrimiçi ayrıştırıcısıdır ve geçerli olup olmadığını kontrol etmek için YAML yapısının ayrıştırılmasına yardımcı olur. YAML tiftiği için resmi bağlantı aşağıda belirtilmiştir:http://www.yamllint.com/

Ayrıştırmanın çıktısını aşağıda gösterildiği gibi görebilirsiniz -

Bu bölüm, son bölümde tartıştığımız prosedürler ve süreçler hakkındaki ayrıntıları açıklayacaktır. YAML'deki Bilgi Modelleri, belirli bir diyagram kullanarak sistematik bir formatta serileştirme ve sunum prosedürünün özelliklerini belirleyecektir.

Bir bilgi modeli için, programlama ortamları arasında taşınabilir olan uygulama bilgilerinin temsil edilmesi önemlidir.

Yukarıda gösterilen diyagram, grafik formatında temsil edilen normal bir bilgi modelini temsil etmektedir. YAML'de yerel verilerin temsili köklüdür, bağlanır ve etiketli düğümlerin grafiğine yönlendirilir. Yönlendirilmiş grafikten bahsedersek, yönlendirilmiş grafiğe sahip bir dizi düğüm içerir. Bilgi modelinde belirtildiği gibi, YAML üç tür düğümü destekler:

  • Sequences
  • Scalars
  • Mappings

Bu temsil düğümlerinin temel tanımları geçen bölümde tartışılmıştır. Bu bölümde, bu terimlerin şematik görünümüne odaklanacağız. Aşağıdaki sıra diyagramı, çeşitli etiket türleri ve eşleme düğümleriyle lejantların iş akışını temsil eder.

Üç tür düğüm vardır: sequence node, scalar node ve mapping node.

Diziler

Sıra düğümü, sıralı bir mimariyi takip eder ve sıralı bir sıfır veya daha fazla düğüm dizisi içerir. Bir YAML dizisi, aynı düğümü tekrar tekrar veya tek bir düğümü içerebilir.

Skaler

YAML'deki skalerlerin içeriği, formatta sıfır dizisi ile temsil edilebilen Unicode karakterleri içerir. Genel olarak, skaler düğüm, skaler miktarları içerir.

Haritalama

Eşleme düğümü, anahtar-değer çifti temsilini içerir. Eşleme düğümünün içeriği, anahtar adının benzersiz tutulması gereken zorunlu bir koşula sahip bir anahtar-değer çifti kombinasyonu içerir. Diziler ve eşlemeler toplu olarak bir koleksiyon oluşturur.

Yukarıda gösterilen diyagramda gösterildiği gibi, skalerlerin, dizilerin ve eşlemelerin sistematik bir formatta temsil edildiğine dikkat edin.

Çeşitli işlevler için çeşitli karakter türleri kullanılır. Bu bölüm, YAML'de kullanılan sözdizimi hakkında ayrıntılı olarak konuşur ve karakter manipülasyonuna odaklanır.

Gösterge Karakterleri

Gösterge karakterleri, YAML belgesinin içeriğini tanımlamak için kullanılan özel bir anlambilim içerir. Aşağıdaki tablo bunu ayrıntılı olarak göstermektedir.

Sr.No. Karakter ve İşlevsellik
1

_

Bir blok dizisi girişini gösterir

2

?

Bir eşleme anahtarını gösterir

3

:

Bir eşleme değerini gösterir

4

,

Akış toplama girişini gösterir

5

[

Bir akış dizisi başlatır

6

]

Bir akış dizisini bitirir

7

{

Bir akış haritalaması başlatır

8

}

Bir akış eşlemesini bitirir

9

#

Yorumları gösterir

10

&

Düğümün çapa özelliğini gösterir

11

*

Takma ad düğümünü gösterir

12

!

Düğümün etiketini gösterir

13

|

Değişmez bir blok skalerini gösterir

14

>

Katlanmış bir blok skalerini gösterir

15

`

Tek tırnak, alıntılanmış bir akış skalerini çevreler

16

"

Çift tırnak, çift tırnaklı akış skalerini çevreler

17

%

Kullanılan direktifi gösterir

Aşağıdaki örnek, söz diziminde kullanılan karakterleri gösterir -

%YAML 1.1
---
!!map {
   ? !!str "sequence"
   : !!seq [
      !!str "one", !!str "two"
   ],
   ? !!str "mapping"
   : !!map {
      ? !!str "sky" : !!str "blue",
      ? !!str "sea" : !!str "green",
   }
}

# This represents
# only comments.
---
!!map1 {
   ? !!str "anchored"
   : !local &A1 "value",
   ? !!str "alias"
   : *A1,
}
!!str "text"

Bu bölümde YAML'deki söz dizimi temellerinin aşağıdaki yönlerini öğreneceksiniz -

  • Üretim parametreleri
  • Girinti Uzayları
  • Ayırma Alanları
  • Yoksayılan Satır Öneki
  • Çizgi katlama

Her yönü ayrıntılı olarak anlayalım.

Üretim Parametreleri

Üretim parametreleri, belirli bir üretimde kullanılan bir dizi parametre ve izin verilen değerler aralığını içerir. Aşağıdaki üretim parametreleri listesi YAML'de kullanılmaktadır -

Girinti

Karakterle belirtilir n veya mKarakter akışı, içerdiği blokların girinti düzeyine bağlıdır. Pek çok üretim bu özellikleri parametreleştirmiştir.

Bağlam

İle gösterilir c. YAML, iki grup bağlamı destekler:block styles ve flow styles.

Tarzı

S ile gösterilir. Skaler içerik, beş stilden birinde sunulabilir:plain, double quoted and single quoted flow, literal and folded block.

Chomping

İle gösterilir t. Blok skalerleri, bloğu kırpmaya yardımcı olan birçok mekanizma sunar:strip, clip ve keep. Chomping, yeni satır dizelerini biçimlendirmeye yardımcı olur. Blok stili gösterimi kullanılır. Chomping süreci göstergeler yardımıyla gerçekleşir. Göstergeler, dizenin satırsonları ile hangi çıktının üretilmesi gerektiğini kontrol eder. Yeni satırlar ile kaldırılır(-) operatör ve satırsonları eklenir (+) Şebeke.

Kırma işlemine bir örnek aşağıda gösterilmiştir -

strip: |-
   text↓
clip: |
   text↓
keep: |+
   text↓

Belirtilen YAML örneğini ayrıştırdıktan sonraki çıktı aşağıdaki gibidir -

Girinti Uzayları

YAML karakter akışında, girinti, sıfır veya daha fazla karakterle satır kesme karakteri olarak tanımlanır. Unutulmaması gereken en önemli nokta, girintinin herhangi bir sekme karakteri içermemesi gerektiğidir. Girintideki karakterler hiçbir zaman düğümün içerik bilgilerinin bir parçası olarak düşünülmemelidir. Daha iyi anlamak için aşağıdaki kodu inceleyin -

%YAML 1.1
---
!!map {
   ? !!str "Not indented"
   : !!map {
      ? !!str "By one space"
      : !!str "By four\n spaces\n",
      ? !!str "Flow style"
      : !!seq [
         !!str "By two",
         !!str "Still by two",
         !!str "Again by two",
      ]
   }
}

Girintilemeden sonra görebileceğiniz çıktı aşağıdaki gibidir -

{
   "Not indented": {
      "By one space": "By four\n spaces\n", 
      "Flow style": [
         "By two", 
         "Still by two", 
         "Again by two"
      ]
   }
}

Ayırma Alanları

YAML, belirteçleri ayırmak için boşluk karakterleri kullanır. En önemli not, YAML'deki ayırmanın sekme karakterleri içermemesi gerektiğidir.

Aşağıdaki tek kod, ayırma alanlarının kullanımını gösterir -

{ · first: · Sammy, · last: · Sosa · }
{
   "\u00b7 last": "\u00b7 Sosa \u00b7", 
   "\u00b7 first": "\u00b7 Sammy"
}

Yoksayılan Satır Öneki

Boş önek her zaman skaler türe bağlı olarak girintiyi içerir ve bu da başında bir boşluk içerir. Düz skalarlar herhangi bir sekme karakteri içermemelidir. Öte yandan, alıntılanan skalarlar sekme karakterleri içerebilir. Blok skaler tamamen girintiye bağlıdır.

Aşağıdaki örnek, göz ardı edilen satır önekinin sistematik bir şekilde çalışmasını göstermektedir -

%YAML 1.1
---
!!map {
   ? !!str "plain"
   : !!str "text lines",
   ? !!str "quoted"
   : !!str "text lines",
   ? !!str "block"
   : !!str "text·®lines\n"
}

Blok akışları için elde edilen çıktı aşağıdaki gibidir -

{
   "plain": "text lines", 
   "quoted": "text lines", 
   "block": "text\u00b7\u00aelines\n"
}

Hat Katlama

Satır Katlama, okunabilirlik için uzun satırları kırmaya izin verir. Daha fazla miktarda kısa satır, daha iyi okunabilirlik anlamına gelir. Satır katlama, uzun çizginin orijinal anlamını not ederek elde edilir. Aşağıdaki örnek, çizgi katlamayı göstermektedir -

%YAML 1.1
--- !!str
"specific\L\
trimmed\n\n\n\
as space"

JSON formatında satır katlama çıktısını aşağıdaki gibi görebilirsiniz -

"specific\u2028trimmed\n\n\nas space"

YAML'de aşağıdaki gibi çeşitli karakter akışlarıyla karşılaşırsınız -

  • Directives
  • Belge Sınırı İşaretleyicileri
  • Documents
  • Tam Akış

Bu bölümde bunları detaylı olarak tartışacağız.

Direktifler

Yönergeler, YAML işlemcide kullanılan temel talimatlardır. Direktifler, serileştirme ağacına yansıtılmayan yorumlar gibi sunum detaylarıdır. YAML'de özel yönergeleri tanımlamanın bir yolu yoktur. Bu bölümde çeşitli direktif türleri ilgili örneklerle tartışılmaktadır -

Ayrılmış Direktifler

Ayrılmış yönergeler, aşağıdaki örnekte gösterildiği gibi üç kısa çizgi (---) ile başlatılır. Ayrılmış yönergeler belirli JSON değerine dönüştürülür.

%YAML 1.1
--- !!str
"foo"

YAML Direktifi

YAML Direktifleri varsayılan direktiflerdir. JSON'a dönüştürülürse, getirilen değer, önceki ve sonlandıran karakterlerde eğik çizgi karakteri içerir.

%YAML 1.1
---
!!str "foo"

Belge Sınırı İşaretleyicileri

YAML, bir akışta birden fazla belgenin yer almasına izin vermek için bu işaretleri kullanır. Bu işaretleyiciler özellikle YAML belgesinin yapısını iletmek için kullanılır. "---" ile başlayan bir satırın yeni bir belgeye başlamak için kullanıldığına dikkat edin.

Aşağıdaki kod, örneklerle bunu açıklamaktadır -

%YAML 1.1
---
!!str "foo"
%YAML 1.1
---
!!str "bar"
%YAML 1.1
---
!!str "baz"

Belgeler

YAML belgesi, tek bir kök düğüm olarak sunulan tek bir yerel veri yapısı olarak kabul edilir. YAML belgesindeki direktifler, yorumlar, girinti ve stiller gibi sunum detayları bunlara dahil edilmiş içerikler olarak değerlendirilmez.

YAML'de kullanılan iki tür belge vardır. Bu bölümde açıklanmıştır -

Açık Belgeler

Belge başlangıç ​​işaretiyle başlar ve ardından kök düğümün sunumu gelir. YAML açık bildirimi örneği aşağıda verilmiştir -

---

some: yaml

...

Verilen örnekte "---" ve "…" olan açık bir başlangıç ​​ve bitiş işaretleri içerir. Belirtilen YAML'yi JSON biçiminde dönüştürürken, çıktıyı aşağıda gösterildiği gibi alıyoruz -

{
   "some": "yaml"
}

Örtülü Belgeler

Bu belgeler, bir belge başlangıç ​​işaretiyle başlamaz. Aşağıda verilen koda uyun -

fruits:
   - Apple
   - Orange
   - Pineapple
   - Mango

Bu değerleri JSON formatında dönüştürerek, çıktıyı aşağıda verildiği gibi basit bir JSON nesnesi olarak elde ederiz -

{
   "fruits": [
      "Apple",
      "Orange",
      "Pineapple",
      "Mango"
   ]
}

Tam Akış

YAML, karakter akışı olarak adlandırılan bir bayt dizisi içerir. Akış, bir karakter kodlamasını belirten bir bayt sırası içeren bir önek ile başlar. Tam akış, bir karakter kodlaması içeren bir önekle başlar ve ardından yorumlar gelir.

Tam akış (karakter akışı) örneği aşağıda gösterilmiştir -

%YAML 1.1
---
!!str "Text content\n"

Her sunum düğümü, adı verilen iki ana özelliği içerir anchor ve tag. Düğüm özellikleri, karakter akışından çıkarılmış düğüm içeriğiyle belirtilebilir.

Düğüm temsilinin temel örneği aşağıdaki gibidir -

%YAML 1.1
---
!!map {
   ? &A1 !!str "foo"
   : !!str "bar",
   ? !!str &A2 "baz"
   : *a1
}

Düğüm Çapaları

Anchor özelliği, ileride başvurulacak bir düğümü temsil eder. Düğümdeki YAML temsilinin karakter akışı şu şekilde gösterilir:ampersand (&)gösterge. YAML işlemcisinin, bağlantı adını, içinde oluşturulan temsil ayrıntılarıyla birlikte korumasına gerek yoktur. Aşağıdaki kod bunu açıklıyor -

%YAML 1.1
---
!!map {
   ? !!str "First occurence"
   : &A !!str "Value",
   ? !!str "Second occurence"
   : *A
}

Çapa düğümleriyle oluşturulan YAML'nin çıktısı aşağıda gösterilmiştir -

---
!!map {
   ? !!str "First occurence"
   : !!str "Value",
   ? !!str "Second occurence"
   : !!str "Value",
}

Düğüm Etiketleri

Tag özelliği, bir düğümü tamamen tanımlayan yerel veri yapısının türünü temsil eder. Bir etiket (!) gösterge. Etiketler, temsil grafiğinin doğal bir parçası olarak kabul edilir. Aşağıdaki örnek, düğüm etiketlerini ayrıntılı olarak açıklamaktadır -

%YAML 1.1
---
!!map {
   ? !<tag:yaml.org,2002:str> "foo"
   : !<!bar> "baz"
}

Düğüm İçeriği

Düğüm içeriği, bir akış içeriği veya blok biçiminde temsil edilebilir. Blok içeriği satırın sonuna kadar uzanır ve yapıyı belirtmek için girinti kullanır. Her koleksiyon türü, belirli bir tek akışlı toplama stilinde temsil edilebilir veya tek bir blok olarak düşünülebilir. Aşağıdaki kod bunu ayrıntılı olarak açıklamaktadır -

%YAML 1.1
---
!!map {
   ? !!str "foo"
   : !!str "bar baz"
}

%YAML 1.1
---
!!str "foo bar"

%YAML 1.1
---
!!str "foo bar"

%YAML 1.1
---
!!str "foo bar\n"

Bu bölümde, içeriği temsil etmek için kullanılan çeşitli skaler türlere odaklanacağız. YAML'de yorumlar sayısal içerikten önce veya sonra gelebilir. Yorumların skaler içeriğe dahil edilmemesi gerektiğine dikkat etmek önemlidir.

Tüm akış skaler stillerinin, birden çok anahtarda kullanım dışında birden çok satır içerebileceğini unutmayın.

Skalerlerin temsili aşağıda verilmiştir -

%YAML 1.1
---
!!map {
   ? !!str "simple key"
   : !!map {
      ? !!str "also simple"
      : !!str "value",
      ? !!str "not a simple key"
      : !!str "any value"
   }
}

Blok skaler başlıklarının üretilen çıktısı aşağıda gösterilmiştir -

{
   "simple key": {
      "not a simple key": "any value", 
      "also simple": "value"
   }
}

Belge İşaretçisi Skaler İçeriği

Bu örnekteki tüm karakterler, iç boşluk karakterleri de dahil olmak üzere içerik olarak kabul edilir.

%YAML 1.1
---
!!map {
   ? !!str "---"
   : !!str "foo",
   ? !!str "...",
   : !!str "bar"
}

%YAML 1.1
---
!!seq [
   !!str "---",
   !!str "...",
   !!map {
      ? !!str "---"
      : !!str "..."
   }
]

Düz satır kesmeleri aşağıda verilen örnekle temsil edilmektedir -

%YAML 1.1
---
!!str "as space \
trimmed\n\
specific\L\n\
none"

Aynısı için ilgili JSON çıktısı aşağıda belirtilmiştir -

"as space trimmed\nspecific\u2028\nnone"

YAML'deki akış stilleri, nesne örneklerini oluşturmak için çapalar ve takma adlar kullanan daha iyi okunabilir özellik için katlanan içerik satırlarını kapsayan JSON'un doğal bir uzantısı olarak düşünülebilir. Bu bölümde, aşağıdaki kavramların akış temsiline odaklanacağız -

  • Takma Ad Düğümleri
  • Boş Düğümler
  • Akış Skaler stilleri
  • Akış toplama stilleri
  • Akış düğümleri

Takma ad düğümlerinin örneği aşağıda gösterilmiştir -

%YAML 1.2
---
!!map {
   ? !!str "First occurrence"
   : &A !!str "Foo",
   ? !!str "Override anchor"
   : &B !!str "Bar",
   ? !!str "Second occurrence"
   : *A,
   ? !!str "Reuse anchor"
   : *B,
}

Yukarıda verilen kodun JSON çıktısı aşağıda verilmiştir -

{
   "First occurrence": "Foo", 
   "Second occurrence": "Foo", 
   "Override anchor": "Bar", 
   "Reuse anchor": "Bar"
}

İçeriği boş olan düğümler boş düğümler olarak kabul edilir. Aşağıdaki örnek bunu göstermektedir -

%YAML 1.2
---
!!map {
   ? !!str "foo" : !!str "",
   ? !!str "" : !!str "bar",
}

JSON'daki boş düğümlerin çıktısı aşağıdaki gibi temsil edilir -

{
   "": "bar", 
   "foo": ""
}

Akış skaler stilleri, çift tırnaklı, tek tırnaklı ve düz türleri içerir. Aynısı için temel örnek aşağıda verilmiştir -

%YAML 1.2
---
!!map {
   ? !!str "implicit block key"
   : !!seq [
      !!map {
         ? !!str "implicit flow key"
         : !!str "value",
      }
   ]  
}

Yukarıda verilen örnek için JSON formatındaki çıktı aşağıda gösterilmiştir -

{
   "implicit block key": [
      {
         "implicit flow key": "value"
      }
   ] 
}

YAML'deki akış koleksiyonu, başka bir akış koleksiyonunun içindeki bir blok koleksiyonuyla iç içe. Akış toplama girişleri ile sonlandırılırcomma (,) gösterge. Aşağıdaki örnek, akış toplama bloğunu ayrıntılı olarak açıklamaktadır -

%YAML 1.2
---
!!seq [
   !!seq [
      !!str "one",
      !!str "two",
   ],
   
   !!seq [
      !!str "three",
      !!str "four",
   ],
]

JSON'da akış toplama için çıktı aşağıda gösterilmiştir -

[
   [
      "one", 
      "two"
   ], 
   [
      "three", 
      "four"
   ]
]

JSON gibi akış stilleri, başlangıç ​​ve bitiş göstergelerini içerir. Herhangi bir özelliği olmayan tek akış stili düz skalerdir.

%YAML 1.2
---
!!seq [
!!seq [ !!str "a", !!str "b" ],
!!map { ? !!str "a" : !!str "b" },
!!str "a",
!!str "b",
!!str "c",]

Yukarıda JSON formatında gösterilen kodun çıktısı aşağıda verilmiştir -

[
   [
      "a", 
      "b"
   ], 
   
   {
      "a": "b"
   }, 
   
   "a", 
   "b", 
   "c"
]

YAML iki blok skaler stil içerir: literal ve folded. Blok skalerleri, içeriğin kendisinden önce bir başlık bulunan birkaç gösterge ile kontrol edilir. Blok skaler başlıklarına bir örnek aşağıda verilmiştir -

%YAML 1.2
---
!!seq [
   !!str "literal\n",
   !!str "·folded\n",
   !!str "keep\n\n",
   !!str "·strip",
]

Varsayılan davranışa sahip JSON formatındaki çıktı aşağıda verilmiştir -

[
   "literal\n", 
   "\u00b7folded\n", 
   "keep\n\n", 
   "\u00b7strip"
]

Blok Stili Türleri

Dört tür blok stili vardır: literal, folded, keep ve stripstilleri. Bu blok stilleri, Block Chomping senaryosu yardımıyla tanımlanır. Blok kırma senaryosuna bir örnek aşağıda verilmiştir -

%YAML 1.2
---
!!map {
   ? !!str "strip"
   : !!str "# text",
   ? !!str "clip"
   : !!str "# text\n",
   ? !!str "keep"
   : !!str "# text\n",
}

Üç formatta üretilen çıktıyı JSON'da aşağıda verildiği gibi görebilirsiniz -

{
   "strip": "# text", 
   "clip": "# text\n", 
   "keep": "# text\n"
}

YAML'de Chomping, çeşitli biçimlerde yorumlanan son kesmeleri ve takip eden boş satırları kontrol eder.

Sıyırma

Bu durumda, skaler içerik için son satır sonu ve boş satırlar hariç tutulur. Kırma göstergesi "-" ile belirtilir.

Kırpma

Açık bir kırılma göstergesi belirtilmezse kırpma varsayılan bir davranış olarak kabul edilir. Son kırılma karakteri skalerin içeriğinde korunur. En iyi kırpma örneği yukarıdaki örnekte gösterilmiştir. Yeni satır ile biter“\n” karakter.

Tutmak

Tutma, "+" chomping göstergesinin temsil edildiği toplamayı ifade eder. Oluşturulan ek satırlar katlanmaya tabi değildir. Ek hatlar katlanmaya tabi değildir.

Sıra stillerini anlamak için koleksiyonları anlamak önemlidir. Koleksiyon kavramı ve sekans stilleri paralel olarak çalışır. YAML'deki koleksiyon, uygun sıralama stilleriyle temsil edilir. Etiketlerin doğru sıralanmasına başvurmak istiyorsanız, her zaman koleksiyonlara bakın. YAML'deki koleksiyonlar, dizilerde temsil edildiği gibi sıfırdan başlayarak sıralı tamsayılarla indekslenir. Sekans stillerinin odak noktası koleksiyonlarla başlar.

Misal

Evrendeki gezegen sayısını, bir koleksiyon olarak oluşturulabilecek bir dizi olarak ele alalım. Aşağıdaki kod, evrendeki gezegenlerin sıra stillerinin nasıl temsil edileceğini gösterir -

# Ordered sequence of nodes in YAML STRUCTURE
Block style: !!seq
- Mercury   # Rotates - no light/dark sides.
- Venus     # Deadliest. Aptly named.
- Earth     # Mostly dirt.
- Mars      # Seems empty.
- Jupiter   # The king.
- Saturn    # Pretty.
- Uranus    # Where the sun hardly shines.
- Neptune   # Boring. No rings.
- Pluto     # You call this a planet?
Flow style: !!seq [ Mercury, Venus, Earth, Mars,      # Rocks
                    Jupiter, Saturn, Uranus, Neptune, # Gas
                    Pluto ]                           # Overrated

Ardından, JSON biçiminde sıralı sıra için aşağıdaki çıktıyı görebilirsiniz -

{
   "Flow style": [
      "Mercury", 
      "Venus", 
      "Earth", 
      "Mars", 
      "Jupiter", 
      "Saturn", 
      "Uranus", 
      "Neptune", 
      "Pluto"
   ], 
   
   "Block style": [
      "Mercury", 
      "Venus", 
      "Earth", 
      "Mars", 
      "Jupiter", 
      "Saturn", 
      "Uranus", 
      "Neptune", 
      "Pluto"
   ]
}

YAML'deki akış eşlemeleri, anahtar değer çiftlerinin sırasız koleksiyonunu temsil eder. Eşleme düğümü olarak da adlandırılırlar. Anahtarların benzersiz tutulması gerektiğini unutmayın. Akış eşleme yapısında anahtarların bir kopyası varsa, bir hata oluşturur. Anahtar sırası serileştirme ağacında oluşturulur.

Misal

Akış haritalama yapısının bir örneği aşağıda gösterilmiştir -

%YAML 1.1
paper:
   uuid: 8a8cbf60-e067-11e3-8b68-0800200c9a66
   name: On formally undecidable propositions of  Principia Mathematica and related systems I.
   author: Kurt Gödel.
tags:
   - tag:
      uuid: 98fb0d90-e067-11e3-8b68-0800200c9a66
      name: Mathematics
   - tag:
      uuid: 3f25f680-e068-11e3-8b68-0800200c9a66
      name: Logic

JSON formatında eşlenmiş dizinin (sırasız liste) çıktısı aşağıda gösterildiği gibidir -

{
   "paper": {
      "uuid": "8a8cbf60-e067-11e3-8b68-0800200c9a66",
      "name": "On formally undecidable propositions of Principia Mathematica and related systems I.",
      "author": "Kurt Gödel."
   },
   "tags": [
      {
         "tag": {
            "uuid": "98fb0d90-e067-11e3-8b68-0800200c9a66",
            "name": "Mathematics"
         }
      },
      {
         "tag": {
            "uuid": "3f25f680-e068-11e3-8b68-0800200c9a66",
            "name": "Logic"
         }
      }
   ]
}

Bu çıktıyı yukarıda gösterildiği gibi gözlemlerseniz, anahtar adlarının YAML eşleme yapısında benzersiz tutulduğu gözlenir.

YAML'nin blok dizileri bir dizi düğümü temsil eder. Her öğe baştaki "-" göstergesiyle gösterilir. YAML'deki "-" göstergesinin düğümden beyaz bir boşlukla ayrılması gerektiğini unutmayın.

Blok dizisinin temel temsili aşağıda verilmiştir -

block sequence:
··- one↓
  - two : three↓

Misal

Blok dizilerinin daha iyi anlaşılması için aşağıdaki örnekleri inceleyin.

örnek 1

port: &ports
  adapter:  postgres
  host:     localhost

development:
  database: myapp_development
  <<: *ports

JSON formatındaki blok dizilerinin çıktısı aşağıda verilmiştir -

{
   "port": {
      "adapter": "postgres",
      "host": "localhost"
   },
   "development": {
      "database": "myapp_development",
      "adapter": "postgres",
      "host": "localhost"
   }
}

Bir YAML şeması, bir dizi etiket kombinasyonu olarak tanımlanır ve spesifik olmayan etiketleri çözmek için bir mekanizma içerir. YAML'deki hataya dayanıklı şema, herhangi bir YAML belgesiyle kullanılabilecek şekilde oluşturulur. Ayrıca genel bir YAML belgesi için önerilen bir şema olarak kabul edilir.

Türler

İki tür hata korumalı şema vardır: Generic Mapping ve Generic Sequence

Genel Eşleme

İlişkili bir kapsayıcıyı temsil eder. Burada, her anahtar ilişkilendirmede benzersizdir ve tam olarak tek bir değerle eşlenir. YAML, anahtar tanımlar için herhangi bir kısıtlama içermez.

Genel eşlemeyi temsil etmek için bir örnek aşağıda verilmiştir -

Clark : Evans
Ingy : döt Net
Oren : Ben-Kiki
Flow style: !!map { Clark: Evans, Ingy: döt Net, Oren: Ben-Kiki }

JSON formatında genel eşleme yapısının çıktısı aşağıda gösterilmiştir -

{
   "Oren": "Ben-Kiki", 
   "Ingy": "d\u00f6t Net", 
   "Clark": "Evans", 
   "Flow style": {
      "Oren": "Ben-Kiki", 
      "Ingy": "d\u00f6t Net", 
      "Clark": "Evans"
   }
}

Genel Sıra

Bir tür diziyi temsil eder. Sıfır ile başlayan sıralı tamsayılarla indekslenmiş bir koleksiyon içerir. İle temsil edilir!!seq etiket.

Clark : Evans
Ingy : döt Net
Oren : Ben-Kiki
Flow style: !!seq { Clark: Evans, Ingy: döt Net, Oren: Ben-Kiki }

Bu genel arıza güvenliği dizisi için çıktı

schema is shown below:
{
   "Oren": "Ben-Kiki", 
   "Ingy": "d\u00f6t Net", 
   "Clark": "Evans", 
   "Flow style": {
      "Oren": "Ben-Kiki", 
      "Ingy": "d\u00f6t Net", 
      "Clark": "Evans"
   }
}

YAML'deki JSON şeması, çoğu modern bilgisayar dilinin ortak paydası olarak kabul edilir. JSON dosyalarının ayrıştırılmasına izin verir. YAML'de, diğer şemaların JSON şemasında dikkate alınması şiddetle önerilir. Bunun birincil nedeni, kullanıcı dostu anahtar-değer kombinasyonu içermesidir. Mesajlar anahtar olarak kodlanabilir ve gerektiğinde ve gerektiği zaman kullanılabilir.

JSON şeması skalerdir ve bir değeri yoktur. JSON şemasındaki bir eşleme girişi, null değerinin geçerli olarak kabul edildiği bazı anahtar ve değer çifti biçiminde temsil edilir.

Misal

Boş bir JSON şeması aşağıda gösterildiği gibi temsil edilir -

!!null null: value for null key
key with null value: !!null null

JSON gösteriminin çıktısı aşağıda belirtilmiştir -

{
   "null": "value for null key", 
   "key with null value": null
}

Misal

Aşağıdaki örnek Boolean JSON şemasını temsil eder -

YAML is a superset of JSON: !!bool true
Pluto is a planet: !!bool false

Aşağıdakiler, JSON formatında aynı çıktıdır -

{
   "YAML is a superset of JSON": true, 
   "Pluto is a planet": false
}

Misal

Aşağıdaki örnek tam sayı JSON şemasını temsil eder -

negative: !!int -12
zero: !!int 0
positive: !!int 34
{
   "positive": 34, 
   "zero": 0, 
   "negative": -12
}

Misal

JSON şemasındaki etiketler aşağıdaki örnekle temsil edilmektedir -

A null: null
Booleans: [ true, false ]
Integers: [ 0, -0, 3, -19 ]
Floats: [ 0., -0.0, 12e03, -2E+05 ]
Invalid: [ True, Null, 0o7, 0x3A, +12.3 ]

JSON Çıktısını aşağıda gösterildiği gibi bulabilirsiniz -

{
   "Integers": [
      0, 
      0, 
      3, 
      -19
   ], 
   
   "Booleans": [
      true, 
      false
   ], 
   "A null": null, 

   "Invalid": [
         true, 
         null, 
         "0o7", 
         58, 
         12.300000000000001
   ], 
   
   "Floats": [
      0.0, 
      -0.0, 
      "12e03", 
      "-2E+05"
   ]
}