YAML - Panduan Cepat

YAML Ain't Markup Language adalah bahasa serialisasi data yang sesuai dengan harapan pengguna tentang data. Ini dirancang agar ramah manusia dan berfungsi sempurna dengan bahasa pemrograman lain. Berguna untuk mengelola data dan menyertakan karakter Unicode yang dapat dicetak. Bab ini akan memberi Anda pengenalan tentang YAML dan memberi Anda gambaran tentang fitur-fiturnya.

Format

Pertimbangkan teks yang ditunjukkan di bawah ini -

Quick brown fox jumped over the lazy dog.

Teks YAML untuk ini akan direpresentasikan seperti yang ditunjukkan di bawah ini -

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

Perhatikan bahwa YAML mengambil nilai dalam format string dan mewakili keluaran seperti yang disebutkan di atas.

Contoh

Mari kita pahami format di YAML dengan bantuan contoh berikut -

Pertimbangkan nomor poin "pi" berikut, yang memiliki nilai 3,1415926. Di YAML, ini direpresentasikan sebagai bilangan mengambang seperti yang ditunjukkan di bawah ini -

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

Misalkan, beberapa nilai akan dimuat dalam struktur data tertentu seperti yang disebutkan di bawah -

eggs
ham
spam
French basil salmon terrine

Saat Anda memuat ini ke YAML, nilainya diambil dalam struktur data array yang merupakan bentuk daftar. Outputnya seperti yang ditunjukkan di bawah ini -

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

fitur

YAML menyertakan bahasa markup dengan konstruksi penting, untuk membedakan bahasa berorientasi data dengan markup dokumen. Sasaran desain dan fitur YAML diberikan di bawah ini -

  • Mencocokkan struktur data asli dari metodologi agile dan bahasanya seperti Perl, Python, PHP, Ruby dan JavaScript

  • Data YAML portabel antar bahasa pemrograman

  • Termasuk data model data yang konsisten

  • Mudah dibaca oleh manusia

  • Mendukung pemrosesan satu arah

  • Kemudahan implementasi dan penggunaan

Sekarang setelah Anda memiliki gambaran tentang YAML dan fitur-fiturnya, mari kita pelajari dasar-dasarnya dengan sintaks dan operasi lainnya. Ingatlah bahwa YAML menyertakan format terstruktur yang dapat dibaca manusia.

Aturan untuk Membuat file YAML

Saat Anda membuat file di YAML, Anda harus mengingat aturan dasar berikut -

  • YAML peka huruf besar / kecil

  • File harus memiliki .yaml sebagai ekstensi

  • YAML tidak mengizinkan penggunaan tab saat membuat file YAML; spasi sebagai gantinya diperbolehkan

Komponen Dasar File YAML

Komponen dasar YAML dijelaskan di bawah -

Format Blok Konvensional

Format blok ini menggunakan hyphen+spaceuntuk memulai item baru dalam daftar tertentu. Perhatikan contoh yang ditunjukkan di bawah ini -

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

Inline Format

Format sebaris dipisahkan dengan comma and spacedan item diapit dalam JSON. Perhatikan contoh yang ditunjukkan di bawah ini -

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

Folded Text

Teks terlipat mengubah baris baru menjadi spasi dan menghapus spasi di depan. Perhatikan contoh yang ditunjukkan di bawah ini -

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

Struktur yang mengikuti semua konvensi dasar YAML ditunjukkan di bawah ini -

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

Sinopsis Elemen Dasar YAML

  • Sinopsis elemen dasar YAML diberikan di sini: Komentar di YAML dimulai dengan (#) karakter.

  • Komentar harus dipisahkan dari token lain dengan spasi.

  • Indentasi spasi digunakan untuk menunjukkan struktur.

  • Tab tidak disertakan sebagai indentasi untuk file YAML.

  • Anggota daftar dilambangkan dengan tanda hubung di depan (-).

  • Anggota daftar diapit dalam tanda kurung siku dan dipisahkan dengan koma.

  • Array asosiatif direpresentasikan menggunakan titik dua ( : )dalam format key value pair. Mereka diapit kawat gigi keriting{}.

  • Beberapa dokumen dengan aliran tunggal dipisahkan dengan 3 tanda hubung (---).

  • Node berulang di setiap file awalnya dilambangkan dengan ampersand (&) dan dengan tanda bintang (*) tandai nanti.

  • YAML selalu membutuhkan titik dua dan koma yang digunakan sebagai pemisah daftar diikuti oleh spasi dengan nilai skalar.

  • Node harus diberi label dengan tanda seru (!) atau tanda seru ganda (!!), diikuti dengan string yang dapat diperluas menjadi URI atau URL.

Indentasi dan pemisahan adalah dua konsep utama saat Anda mempelajari bahasa pemrograman apa pun. Bab ini membahas tentang dua konsep yang terkait dengan YAML secara mendetail.

Indentasi YAML

YAML tidak menyertakan spasi wajib apa pun. Lebih jauh, tidak perlu konsisten. Indentasi YAML yang valid ditunjukkan di bawah -

a:
   b:
      - c
      -  d
      - e
f:
      "ghi"
  • Anda harus mengingat aturan berikut saat bekerja dengan indentasi di YAML: Blok aliran harus dimaksudkan dengan setidaknya beberapa spasi dengan level blok di sekitarnya saat ini.

  • Isi aliran YAML mencakup beberapa baris. Awal isi aliran dimulai dengan{ atau [.

  • Item daftar blok menyertakan indentasi yang sama dengan level blok di sekitarnya karena - dianggap sebagai bagian dari indentasi.

Contoh Blok yang Dimaksud

Perhatikan kode berikut yang menunjukkan indentasi dengan contoh -

--- !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.

Pemisahan String

String dipisahkan menggunakan string kutip ganda. Jika Anda keluar dari karakter baris baru dalam string tertentu, itu sepenuhnya dihapus dan diterjemahkan ke dalam nilai spasi.

Contoh

Dalam contoh ini kami telah memfokuskan daftar hewan yang terdaftar sebagai struktur array dengan tipe data string. Setiap elemen baru terdaftar dengan awalan tanda hubung seperti yang disebutkan sebagai awalan.

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

Contoh lain untuk menjelaskan representasi string di YAML disebutkan di bawah ini.

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:"

Contoh ini mengacu pada kumpulan pesan kesalahan yang dapat digunakan pengguna hanya dengan menyebutkan aspek kunci dan mengambil nilai yang sesuai. Pola YAML ini mengikuti struktur JSON yang dapat dipahami oleh pengguna yang baru mengenal YAML.

Sekarang setelah Anda merasa nyaman dengan sintaks dan dasar-dasar YAML, mari kita lanjutkan lebih jauh ke detailnya. Di bab ini, kita akan melihat bagaimana menggunakan komentar di YAML.

YAML supports single line comments. Strukturnya dijelaskan di bawah dengan bantuan contoh -

# this is single line comment.

YAML does not support multi line comments. Jika Anda ingin memberikan komentar untuk beberapa baris, Anda dapat melakukannya seperti yang ditunjukkan pada contoh di bawah ini -

# this
# is a multiple
# line comment

Fitur Komentar

Fitur komentar di YAML diberikan di bawah ini -

  • Blok yang diberi komentar dilewati selama eksekusi.

  • Komentar membantu menambahkan deskripsi untuk blok kode tertentu.

  • Komentar tidak boleh muncul di dalam skalar.

  • YAML tidak menyertakan cara apa pun untuk keluar dari simbol hash (#) jadi dalam string multi-baris sehingga tidak ada cara untuk membagi komentar dari nilai string mentah.

Komentar dalam koleksi ditampilkan di bawah -

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

Kombinasi tombol pintasan untuk mengomentari blok YAML adalah Ctrl+Q.

Jika Anda menggunakan Sublime Text editor, langkah-langkah untuk mengomentari blok disebutkan di bawah -

Pilih blok. Gunakan "CTRL + /" di Linux dan Windows dan "CMD + /" untuk sistem operasi Mac. Jalankan blok tersebut.

Perhatikan bahwa langkah yang sama berlaku jika Anda menggunakan Visual Studio Code Editor. Itu selalu disarankan untuk digunakanSublime Text Editor untuk membuat file YAML karena didukung oleh sebagian besar sistem operasi dan menyertakan tombol pintas yang ramah pengembang.

YAML menyertakan koleksi blok yang menggunakan indentasi untuk cakupan. Di sini, setiap entri dimulai dengan baris baru. Urutan blok dalam koleksi menunjukkan setiap entri dengan adash and space(-). Di YAML, gaya koleksi blok tidak dilambangkan dengan indikator spesifik apa pun. Pengumpulan blok di YAML dapat dibedakan dari kuantitas skalar lainnya dengan identifikasi pasangan nilai kunci yang disertakan di dalamnya.

Pemetaan adalah representasi dari nilai kunci yang termasuk dalam struktur JSON. Ini sering digunakan dalam sistem dukungan multibahasa dan pembuatan API dalam aplikasi seluler. Pemetaan menggunakan representasi pasangan nilai kunci dengan penggunaancolon and space (:).

Contoh

Perhatikan contoh urutan skalar, misalnya daftar pemain bola seperti gambar di bawah ini -

- Mark Joseph
- James Stephen
- Ken Griffey

Contoh berikut menunjukkan pemetaan skalar ke skalar -

hr: 87
avg: 0.298
rbi: 149

Contoh berikut menunjukkan pemetaan skalar ke urutan -

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

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

Koleksi dapat digunakan untuk pemetaan urutan yang ditunjukkan di bawah ini -

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

Dengan koleksi, YAML menyertakan gaya aliran menggunakan indikator eksplisit daripada menggunakan indentasi untuk menunjukkan spasi. Urutan aliran dalam koleksi ditulis sebagai daftar yang dipisahkan koma yang diapit oleh tanda kurung siku. Ilustrasi terbaik untuk koleksi yang termasuk dalam kerangka kerja PHP seperti simfoni.

[PHP, Perl, Python]

Koleksi ini disimpan dalam dokumen. Pemisahan dokumen di YAML dilambangkan dengan tiga tanda hubung atau tanda hubung (---). Akhir dokumen ditandai dengan tiga titik (…).

Pemisahan dokumen di YAML dilambangkan dengan tiga tanda hubung (---). Akhir dokumen direpresentasikan dengan tiga titik (…).

Representasi dokumen disebut format struktur yang disebutkan di bawah ini -

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

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

Tanda tanya dengan kombinasi spasi menunjukkan pemetaan struktur yang kompleks. Dalam kumpulan blok, pengguna dapat menyertakan struktur dengan tanda hubung, titik dua, dan tanda tanya. Contoh berikut menunjukkan pemetaan antar urutan -

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

Skalar di YAML ditulis dalam format blok menggunakan tipe literal yang dilambangkan sebagai (|). Ini menunjukkan jumlah jeda baris. Dalam YAML, skalar ditulis dengan gaya lipat (>) di mana setiap baris menunjukkan ruang terlipat yang diakhiri dengan empty line atau more indented garis.

Baris baru dipertahankan dalam literal ditunjukkan di bawah ini -

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

Garis-garis baru yang terlipat dipertahankan selama more indented lines dan blank lines seperti yang ditunjukkan di bawah ini -

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

Skalar aliran YAML menyertakan gaya biasa dan gaya kutipan. Gaya kutipan ganda mencakup berbagai urutan pelolosan. Skalar aliran dapat mencakup banyak baris; jeda baris selalu terlipat dalam struktur ini.

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

Di YAML, node yang tidak diberi tag ditentukan dengan jenis aplikasi tertentu. Contoh spesifikasi tag yang umum digunakanseq, map dan strjenis untuk repositori tag YAML. Tag direpresentasikan sebagai contoh yang disebutkan di bawah ini -

Tag integer

Tag ini menyertakan nilai integer di dalamnya. Mereka juga disebut sebagai tag numerik.

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

Angka floating point

Tag ini menyertakan nilai desimal dan eksponensial. Mereka juga disebut sebagai tag eksponensial.

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

Tag Miscellaneous

Ini mencakup berbagai nilai integer, floating, dan string yang disematkan di dalamnya. Karenanya ini disebut tag lain-lain.

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

Contoh lengkap berikut menentukan konstruksi YAML yang menyertakan simbol dan berbagai representasi yang akan berguna saat mengonversi atau memprosesnya dalam format JSON. Atribut ini juga disebut sebagai nama kunci dalam dokumen JSON. Notasi ini dibuat untuk tujuan keamanan.

Format YAML di atas mewakili berbagai atribut default, adaptor, dan host dengan berbagai atribut lainnya. YAML juga menyimpan log dari setiap file yang dibuat yang menyimpan jejak pesan kesalahan yang dibuat. Saat mengonversi file YAML yang ditentukan dalam format JSON, kami mendapatkan output yang diinginkan seperti yang disebutkan di bawah -

defaults: &defaults
   adapter:  postgres
   host:     localhost

development:
   database: myapp_development
   <<: *defaults

test:
   database: myapp_test
   <<: *defaults

Mari kita ubah format YAML ke JSON dan periksa outputnya.

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

Kunci default dengan awalan "<<: *" disertakan jika diperlukan tanpa perlu menulis cuplikan kode yang sama berulang kali.

YAML mengikuti prosedur standar untuk aliran Proses. Struktur data asli di YAML menyertakan representasi sederhana seperti node. Ini juga disebut sebagai Grafik Node Representasi.

Ini mencakup pemetaan, urutan dan kuantitas skalar yang sedang diserialisasi untuk membuat pohon serialisasi. Dengan serialisasi objek diubah dengan aliran byte.

Pohon kejadian serialisasi membantu dalam membuat presentasi aliran karakter seperti yang direpresentasikan dalam diagram berikut.

Prosedur sebaliknya mem-parsing aliran byte menjadi pohon kejadian berseri. Nantinya, node tersebut diubah menjadi grafik node. Nilai-nilai ini kemudian diubah dalam struktur data asli YAML. Gambar di bawah menjelaskan ini -

Informasi di YAML digunakan dengan dua cara: machine processing dan human consumption. Prosesor di YAML digunakan sebagai alat untuk prosedur mengubah informasi antara tampilan pelengkap dalam diagram yang diberikan di atas. Bab ini menjelaskan struktur informasi yang harus disediakan oleh prosesor YAML dalam aplikasi tertentu.

YAML menyertakan prosedur serialisasi untuk merepresentasikan objek data dalam format serial. Pemrosesan informasi YAML mencakup tiga tahap:Representation, Serialization, Presentation and parsing. Mari kita bahas masing-masing secara rinci.

Perwakilan

YAML merepresentasikan struktur data menggunakan tiga jenis node: sequence, mapping dan scalar.

Urutan

Urutan mengacu pada jumlah entri yang diurutkan, yang memetakan asosiasi tak berurutan dari pasangan nilai kunci. Ini sesuai dengan daftar larik Perl atau Python.

Kode yang ditunjukkan di bawah ini adalah contoh representasi urutan -

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

Pemetaan

Pemetaan di sisi lain mewakili struktur data kamus atau tabel hash. Contoh yang sama disebutkan di bawah -

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

Scalars

Skalar mewakili nilai standar string, integer, tanggal, dan tipe data atom. Perhatikan bahwa YAML juga menyertakan node yang menentukan struktur tipe data. Untuk informasi lebih lanjut tentang skalar, silakan lihat bab 6 dari tutorial ini.

Serialisasi

Proses serialisasi diperlukan dalam YAML yang memudahkan urutan kunci dan nama jangkar yang ramah manusia. Hasil serialisasi adalah pohon serialisasi YAML. Itu dapat dilintasi untuk menghasilkan serangkaian panggilan peristiwa dari data YAML.

Contoh untuk serialisasi diberikan di bawah ini -

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']

Presentasi

Hasil akhir serialisasi YAML disebut presentasi. Ini mewakili aliran karakter dengan cara yang ramah manusia. Prosesor YAML mencakup berbagai detail presentasi untuk membuat aliran, menangani indentasi, dan pemformatan konten. Proses lengkap ini dipandu oleh preferensi pengguna.

Contoh proses penyajian YAML adalah hasil dari nilai JSON yang dibuat. Perhatikan kode yang diberikan di bawah ini untuk pemahaman yang lebih baik -

{
   "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"
               ]
            }
         }
      }
   }
}

Parsing

Parsing adalah proses kebalikan dari presentasi; itu mencakup aliran karakter dan membuat serangkaian acara. Ini membuang detail yang diperkenalkan dalam proses presentasi yang menyebabkan acara serialisasi. Prosedur penguraian dapat gagal karena masukan yang salah bentuk. Ini pada dasarnya adalah prosedur untuk memeriksa apakah YAML terbentuk dengan baik atau tidak.

Pertimbangkan contoh YAML yang disebutkan di bawah -

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

Dengan tiga tanda hubung, ini mewakili awal dokumen dengan berbagai atribut yang kemudian ditentukan di dalamnya.

YAML lint adalah pengurai online dari YAML dan membantu dalam mengurai struktur YAML untuk memeriksa apakah itu valid atau tidak. Tautan resmi untuk lint YAML disebutkan di bawah ini:http://www.yamllint.com/

Anda dapat melihat hasil parsing seperti yang ditunjukkan di bawah ini -

Bab ini akan menjelaskan secara detail tentang prosedur dan proses yang telah kita bahas pada bab sebelumnya. Model Informasi di YAML akan menentukan fitur serialisasi dan prosedur presentasi dalam format yang sistematis menggunakan diagram tertentu.

Untuk model informasi, penting untuk merepresentasikan informasi aplikasi yang portabel antar lingkungan pemrograman.

Diagram yang ditunjukkan di atas merupakan model informasi normal yang direpresentasikan dalam format grafik. Dalam YAML, representasi data asli di-root, terhubung, dan diarahkan ke grafik dari node yang diberi tag. Jika kami menyebutkan grafik terarah, itu termasuk sekumpulan node dengan grafik terarah. Sebagaimana disebutkan dalam model informasi, YAML mendukung tiga jenis node yaitu -

  • Sequences
  • Scalars
  • Mappings

Definisi dasar dari node representasi ini telah dibahas pada bab terakhir. Dalam bab ini, kita akan fokus pada tampilan skematis dari istilah-istilah ini. Diagram urutan berikut merepresentasikan alur kerja legenda dengan berbagai jenis tag dan node pemetaan.

Ada tiga jenis node: sequence node, scalar node dan mapping node.

Urutan

Node urutan mengikuti arsitektur sekuensial dan menyertakan rangkaian nol atau lebih node yang dipesan. Urutan YAML dapat berisi node yang sama berulang kali atau satu node.

Scalars

Konten skalar di YAML menyertakan karakter Unicode yang dapat direpresentasikan dalam format dengan rangkaian nol. Secara umum simpul skalar mencakup besaran skalar.

Pemetaan

Node pemetaan mencakup representasi pasangan nilai kunci. Isi node pemetaan mencakup kombinasi key-value pair dengan syarat wajib bahwa nama kunci harus dibuat unik. Urutan dan pemetaan secara kolektif membentuk sebuah koleksi.

Perhatikan bahwa seperti yang ditunjukkan pada diagram yang ditunjukkan di atas, skalar, urutan, dan pemetaan direpresentasikan dalam format yang sistematis.

Berbagai jenis karakter digunakan untuk berbagai fungsi. Bab ini membahas secara detail tentang sintaks yang digunakan dalam YAML dan berfokus pada manipulasi karakter.

Karakter Indikator

Karakter indikator termasuk semantik khusus yang digunakan untuk mendeskripsikan konten dokumen YAML. Tabel berikut menunjukkan ini secara rinci.

Sr.No. Karakter & Fungsionalitas
1

_

Ini menunjukkan entri urutan blok

2

?

Ini menunjukkan kunci pemetaan

3

:

Ini menunjukkan nilai pemetaan

4

,

Ini menunjukkan entri koleksi aliran

5

[

Ini memulai urutan aliran

6

]

Ini mengakhiri urutan aliran

7

{

Ini memulai pemetaan aliran

8

}

Ini mengakhiri pemetaan aliran

9

#

Ini menunjukkan komentar

10

&

Ini menunjukkan properti jangkar node

11

*

Ini menunjukkan node alias

12

!

Ini menunjukkan tag node

13

|

Ini menunjukkan skalar blok literal

14

>

Ini menunjukkan skalar blok terlipat

15

`

Kutipan tunggal mengelilingi skalar aliran yang dikutip

16

"

Kutipan ganda mengelilingi skalar aliran kutipan ganda

17

%

Ini menunjukkan direktif yang digunakan

Contoh berikut menunjukkan karakter yang digunakan dalam sintaks -

%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"

Dalam bab ini Anda akan mempelajari tentang aspek-aspek primitif sintaks berikut di YAML -

  • Parameter produksi
  • Spasi Indentasi
  • Ruang Pemisahan
  • Awalan Baris yang Diabaikan
  • Melipat garis

Mari kita pahami setiap aspek secara detail.

Parameter Produksi

Parameter produksi mencakup sekumpulan parameter dan kisaran nilai yang diizinkan yang digunakan pada produksi tertentu. Daftar parameter produksi berikut digunakan di YAML -

Lekukan

Itu dilambangkan dengan karakter n atau mAliran karakter tergantung pada tingkat lekukan blok yang termasuk di dalamnya. Banyak produksi telah membuat parameter fitur ini.

Konteks

Ini dilambangkan dengan c. YAML mendukung dua kelompok konteks:block styles dan flow styles.

Gaya

Ini dilambangkan dengan s. Konten skalar dapat disajikan dalam salah satu dari lima gaya:plain, double quoted and single quoted flow, literal and folded block.

Mengunyah

Ini dilambangkan dengan t. Skalar blok menawarkan banyak mekanisme yang membantu dalam memangkas blok:strip, clip dan keep. Chomping membantu dalam memformat string baris baru. Ini digunakan representasi gaya blok. Proses mengunyah terjadi dengan bantuan indikator. Indikator mengontrol output apa yang harus diproduksi dengan baris baru. Baris baru dihapus dengan(-) operator dan baris baru ditambahkan dengan (+) operator.

Contoh proses chomping ditunjukkan di bawah ini -

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

Output setelah mengurai contoh YAML yang ditentukan adalah sebagai berikut -

Spasi Indentasi

Dalam aliran karakter YAML, indentasi didefinisikan sebagai karakter baris baru dengan nol atau lebih karakter. Hal terpenting yang harus diingat adalah lekukan tidak boleh berisi karakter tab apa pun. Karakter dalam indentasi tidak boleh dianggap sebagai bagian dari informasi konten node. Perhatikan kode berikut untuk pemahaman yang lebih baik -

%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",
      ]
   }
}

Output yang dapat Anda lihat setelah indentasi adalah sebagai berikut -

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

Ruang Pemisahan

YAML menggunakan karakter spasi untuk pemisahan antar token. Catatan terpenting adalah bahwa pemisahan di YAML tidak boleh berisi karakter tab.

Satu-satunya kode berikut menunjukkan penggunaan spasi pemisah -

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

Awalan Baris yang Diabaikan

Awalan kosong selalu menyertakan indentasi tergantung pada jenis skalar yang juga menyertakan spasi putih di depannya. Skalar biasa tidak boleh berisi karakter tab apa pun. Di sisi lain, skalar yang dikutip mungkin berisi karakter tab. Blokir skalar sepenuhnya bergantung pada lekukan.

Contoh berikut menunjukkan cara kerja awalan baris yang diabaikan secara sistematis -

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

Output yang dicapai untuk aliran blok adalah sebagai berikut -

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

Melipat Garis

Line Folding memungkinkan pemutusan garis panjang agar mudah dibaca. Lebih banyak garis pendek berarti lebih mudah dibaca. Pelipatan garis dicapai dengan memperhatikan semantik asli dari garis panjang. Contoh berikut menunjukkan pelipatan garis -

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

Anda dapat melihat output untuk pelipatan garis dalam format JSON sebagai berikut -

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

Di YAML, Anda menemukan berbagai aliran karakter sebagai berikut -

  • Directives
  • Penanda Batas Dokumen
  • Documents
  • Aliran Lengkap

Pada bab ini, kami akan membahasnya secara detail.

Arahan

Arahan adalah instruksi dasar yang digunakan dalam prosesor YAML. Direktif adalah detail presentasi seperti komentar yang tidak tercermin dalam pohon serialisasi. Di YAML, tidak ada cara untuk mendefinisikan perintah pribadi. Bagian ini membahas berbagai jenis arahan dengan contoh yang relevan -

Arahan yang Dicadangkan

Arahan yang dipesan diinisialisasi dengan tiga karakter tanda hubung (---) seperti yang ditunjukkan pada contoh di bawah ini. Arahan yang dipesan diubah menjadi nilai JSON tertentu.

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

Arahan YAML

Direktif YAML adalah direktif default. Jika dikonversi dalam JSON, nilai yang diambil menyertakan karakter garis miring di karakter sebelumnya dan karakter akhir.

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

Penanda Batas Dokumen

YAML menggunakan penanda ini untuk memungkinkan lebih dari satu dokumen dimuat dalam satu aliran. Penanda ini secara khusus digunakan untuk menyampaikan struktur dokumen YAML. Perhatikan bahwa baris yang diawali dengan "---" digunakan untuk memulai dokumen baru.

Kode berikut menjelaskan tentang ini dengan contoh -

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

Dokumen

Dokumen YAML dianggap sebagai struktur data asli tunggal yang disajikan sebagai simpul akar tunggal. Detail presentasi dalam dokumen YAML seperti arahan, komentar, indentasi, dan gaya tidak dianggap sebagai konten yang termasuk di dalamnya.

Ada dua jenis dokumen yang digunakan di YAML. Mereka dijelaskan di bagian ini -

Dokumen Eksplisit

Ini dimulai dengan penanda awal dokumen diikuti dengan presentasi dari simpul akar. Contoh deklarasi eksplisit YAML diberikan di bawah ini -

---

some: yaml

...

Ini mencakup penanda awal dan akhir eksplisit yang "---" dan "..." dalam contoh yang diberikan. Saat mengonversi YAML yang ditentukan dalam format JSON, kami mendapatkan output seperti yang ditunjukkan di bawah ini -

{
   "some": "yaml"
}

Dokumen Implisit

Dokumen-dokumen ini tidak dimulai dengan penanda awal dokumen. Perhatikan kode yang diberikan di bawah ini -

fruits:
   - Apple
   - Orange
   - Pineapple
   - Mango

Mengonversi nilai-nilai ini dalam format JSON, kami mendapatkan output sebagai objek JSON sederhana seperti yang diberikan di bawah ini -

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

Aliran Lengkap

YAML menyertakan urutan byte yang disebut aliran karakter. Aliran dimulai dengan awalan yang berisi urutan byte yang menunjukkan pengkodean karakter. Aliran lengkap dimulai dengan awalan yang berisi pengkodean karakter, diikuti dengan komentar.

Contoh aliran lengkap (aliran karakter) ditunjukkan di bawah ini -

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

Setiap node presentasi mencakup dua karakteristik utama yang disebut anchor dan tag. Properti node dapat ditentukan dengan konten node, dihilangkan dari aliran karakter.

Contoh dasar representasi node adalah sebagai berikut -

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

Jangkar Node

Properti jangkar mewakili sebuah node untuk referensi di masa mendatang. Aliran karakter representasi YAML dalam node dilambangkan denganampersand (&)indikator. Prosesor YAML tidak perlu mempertahankan nama jangkar dengan detail representasi yang tersusun di dalamnya. Kode berikut menjelaskan ini -

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

Output dari YAML yang dihasilkan dengan node jangkar ditunjukkan di bawah ini -

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

Tag Node

Properti tag merepresentasikan jenis struktur data asli yang mendefinisikan sebuah node secara lengkap. Sebuah tag diwakili dengan (!) indikator. Tag dianggap sebagai bagian inheren dari grafik representasi. Contoh berikut menjelaskan tag node secara detail -

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

Konten Node

Konten node dapat direpresentasikan dalam konten aliran atau format blok. Konten blok meluas hingga akhir baris dan menggunakan lekukan untuk menunjukkan struktur. Setiap jenis koleksi dapat diwakili dalam gaya koleksi aliran tunggal tertentu atau dapat dianggap sebagai satu blok. Kode berikut menjelaskan ini secara rinci -

%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"

Pada bab ini, kita akan fokus pada berbagai jenis skalar yang digunakan untuk merepresentasikan konten. Di YAML, komentar dapat mendahului atau mengikuti konten skalar. Penting untuk dicatat bahwa komentar tidak boleh dimasukkan dalam konten skalar.

Perhatikan bahwa semua gaya skalar aliran dapat menyertakan banyak baris, kecuali dengan penggunaan di banyak tombol.

Representasi skalar diberikan di bawah ini -

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

Output yang dihasilkan dari header skalar blok ditunjukkan di bawah ini -

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

Konten Skalar Penanda Dokumen

Semua karakter dalam contoh ini dianggap sebagai konten, termasuk karakter spasi dalam.

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

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

Jeda baris biasa diwakili dengan contoh yang diberikan di bawah ini -

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

Output JSON yang sesuai untuk hal yang sama disebutkan di bawah ini -

"as space trimmed\nspecific\u2028\nnone"

Gaya aliran di YAML dapat dianggap sebagai perpanjangan alami JSON untuk menutupi garis konten lipat untuk fitur yang lebih mudah dibaca yang menggunakan jangkar dan alias untuk membuat instance objek. Dalam bab ini, kita akan fokus pada representasi aliran dari konsep berikut -

  • Node Alias
  • Node Kosong
  • Gaya Skalar Arus
  • Gaya pengumpulan aliran
  • Node aliran

Contoh node alias ditunjukkan di bawah ini -

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

Output JSON dari kode yang diberikan di atas diberikan di bawah ini -

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

Node dengan konten kosong dianggap sebagai node kosong. Contoh berikut menunjukkan ini -

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

Output dari node kosong di JSON direpresentasikan seperti di bawah ini -

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

Gaya skalar aliran mencakup tipe kutipan ganda, kutipan tunggal, dan biasa. Contoh dasar untuk hal yang sama diberikan di bawah ini -

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

Output dalam format JSON untuk contoh yang diberikan di atas ditunjukkan di bawah ini -

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

Pengumpulan aliran di YAML bertingkat dengan kumpulan blok dalam kumpulan aliran lain. Entri koleksi aliran diakhiri dengancomma (,) indikator. Contoh berikut menjelaskan blok pengumpulan aliran secara rinci -

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

Output untuk pengumpulan aliran di JSON ditunjukkan di bawah ini -

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

Gaya aliran seperti JSON mencakup indikator awal dan akhir. Satu-satunya gaya aliran yang tidak memiliki properti apa pun adalah skalar biasa.

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

Output untuk kode yang ditunjukkan di atas dalam format JSON diberikan di bawah ini -

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

YAML mencakup dua gaya skalar blok: literal dan folded. Skalar blok dikontrol dengan beberapa indikator dengan tajuk yang mendahului konten itu sendiri. Contoh header blok skalar diberikan di bawah ini -

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

Output dalam format JSON dengan perilaku default diberikan di bawah ini -

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

Jenis Gaya Blok

Ada empat jenis gaya blok: literal, folded, keep dan stripgaya. Gaya blok ini ditentukan dengan bantuan skenario Block Chomping. Contoh skenario pengunyahan balok diberikan di bawah ini -

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

Anda dapat melihat output yang dihasilkan dengan tiga format di JSON seperti yang diberikan di bawah ini -

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

Mengunyah YAML mengontrol jeda terakhir dan mengikuti garis kosong yang diinterpretasikan dalam berbagai bentuk.

Stripping

Dalam hal ini, baris terakhir dan baris kosong dikecualikan untuk konten skalar. Ini ditentukan oleh indikator chomping "-".

Guntingan

Clipping dianggap sebagai perilaku default jika tidak ada indikator chomping eksplisit yang ditentukan. Karakter istirahat terakhir dipertahankan dalam konten skalar. Contoh terbaik dari pemotongan ditunjukkan pada contoh di atas. Ini diakhiri dengan baris baru“\n” karakter.

Penyimpanan

Keeping mengacu pada penambahan dengan representasi indikator chomping “+”. Garis tambahan yang dibuat tidak dapat dilipat. Garis tambahan tidak dapat dilipat.

Untuk memahami gaya urutan, penting untuk memahami koleksi. Konsep koleksi dan gaya urutan bekerja secara paralel. Koleksi di YAML direpresentasikan dengan gaya urutan yang tepat. Jika Anda ingin merujuk urutan tag yang tepat, selalu merujuk ke koleksi. Koleksi di YAML diindeks oleh bilangan bulat berurutan yang dimulai dengan nol seperti yang direpresentasikan dalam array. Fokus gaya urutan dimulai dengan koleksi.

Contoh

Mari kita pertimbangkan jumlah planet di alam semesta sebagai urutan yang dapat dibuat sebagai kumpulan. Kode berikut menunjukkan bagaimana merepresentasikan gaya urutan planet di alam semesta -

# 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

Kemudian, Anda dapat melihat output berikut untuk urutan yang diurutkan dalam format JSON -

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

Pemetaan aliran di YAML mewakili kumpulan pasangan nilai kunci yang tidak diurutkan. Mereka juga disebut sebagai node pemetaan. Perhatikan bahwa kunci harus dijaga agar tetap unik. Jika terjadi duplikasi kunci pada struktur flow mapping maka akan menghasilkan error. Urutan kunci dibuat di pohon serialisasi.

Contoh

Contoh struktur pemetaan aliran ditunjukkan di bawah ini -

%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

Output urutan yang dipetakan (daftar tidak berurutan) dalam format JSON adalah seperti di bawah ini -

{
   "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"
         }
      }
   ]
}

Jika Anda mengamati keluaran ini seperti yang ditunjukkan di atas, terlihat bahwa nama-nama kunci dipertahankan unik dalam struktur pemetaan YAML.

Urutan blok dari YAML mewakili serangkaian node. Setiap item dilambangkan dengan indikator “-“. Perhatikan bahwa indikator "-" di YAML harus dipisahkan dari node dengan spasi.

Representasi dasar dari urutan blok diberikan di bawah ini -

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

Contoh

Perhatikan contoh berikut untuk pemahaman yang lebih baik tentang urutan blok.

Contoh 1

port: &ports
  adapter:  postgres
  host:     localhost

development:
  database: myapp_development
  <<: *ports

Output dari urutan blok dalam format JSON diberikan di bawah ini -

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

Skema YAML didefinisikan sebagai kombinasi dari kumpulan tag dan menyertakan mekanisme untuk menyelesaikan tag non-spesifik. Skema keamanan kegagalan di YAML dibuat sedemikian rupa sehingga dapat digunakan dengan dokumen YAML apa pun. Ini juga dianggap sebagai skema yang direkomendasikan untuk dokumen YAML generik.

Jenis

Ada dua jenis skema keamanan gagal: Generic Mapping dan Generic Sequence

Pemetaan Umum

Ini mewakili wadah asosiatif. Di sini, setiap kunci unik dalam pengaitan dan dipetakan tepat ke satu nilai. YAML tidak menyertakan batasan untuk definisi kunci.

Contoh untuk merepresentasikan pemetaan generik diberikan di bawah ini -

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

Output dari struktur pemetaan generik dalam format JSON ditunjukkan di bawah ini -

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

Urutan Generik

Ini mewakili jenis urutan. Ini mencakup koleksi yang diindeks oleh bilangan bulat berurutan yang dimulai dengan nol. Itu diwakili dengan!!seq menandai.

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

Keluaran untuk urutan umum dari failafe ini

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

Skema JSON dalam YAML dianggap sebagai penyebut umum dari sebagian besar bahasa komputer modern. Ini memungkinkan penguraian file JSON. Sangat disarankan di YAML bahwa skema lain harus dipertimbangkan pada skema JSON. Alasan utama untuk ini adalah karena ini menyertakan kombinasi nilai kunci yang ramah pengguna. Pesan tersebut dapat disandikan sebagai kunci dan dapat digunakan sesuai kebutuhan.

Skema JSON adalah skalar dan tidak memiliki nilai. Entri pemetaan dalam skema JSON direpresentasikan dalam format beberapa pasangan kunci dan nilai yang menganggap null sebagai valid.

Contoh

Skema JSON null ditunjukkan seperti yang ditunjukkan di bawah ini -

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

Output dari representasi JSON disebutkan di bawah ini -

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

Contoh

Contoh berikut mewakili skema Boolean JSON -

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

Berikut ini adalah keluaran yang sama dalam format JSON -

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

Contoh

Contoh berikut mewakili skema JSON integer -

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

Contoh

Tag dalam skema JSON diwakili dengan contoh berikut -

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 ]

Anda dapat menemukan Output JSON seperti yang ditunjukkan di bawah ini -

{
   "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"
   ]
}