YAML ile JSON Arasındaki Fark Nedir?

YAML ve JSON, insanlar tarafından okunabilir bir veri değişimi mekanizması sağlayan iki veri serileştirme biçimidir. Verileri yazılım uygulamaları arasında değişim için standart bir şekilde biçimlendirirler ve metinleri insanlar tarafından da okunabilir. Her ikisi de verileri anahtar-değer çiftleri olarak gösterir. JSON, değer olarak veri nesnelerini desteklerken, YAML desteklemez. Bununla birlikte, YAML daha fazla veri türünü destekler ve doğal dil kullanımında geliştirici kullanımını desteklemeye daha yakındır.

JSON hakkında bilgi edinin »

Veri gösterimi: YAML ve JSON

JSON ve YAML'nin görünümü ile söz dizimi benzer ancak biraz farklıdır.

Bir bakışta JSON biçimi, veri temsilinde YAML'den daha fazla makine benzeri görünür. Bir JSON mesajı şu sembolleri içerir:

  • Nesneler için süslü ayraç
  • Anahtar-değer çiftlerini ayırmak için iki nokta üst üste
  • Diziler için köşeli parantez 
  • Dizeleri kapatmak için tırnak işaretleri

JSON, JavaScript'in küçük bir alt kümesinden oluşturulmuştur. Bu nedenle söz dizimi, JSON belgelerinin programlama koduna benzer görünmesini sağlar.
 

JSON'dan farklı olarak, YAML biçimi daha çok birisinin yapılandırılmış verileri kağıda yazmasına benzer. Özellikle insanlar için daha kolay okunur olacak şekilde tasarlanmıştır. Aşağıdakileri kullanır:

  • Nesneleri temsil etmek için girinti 
  • Anahtar-değer çiftlerini ayırmak için iki nokta üst üste
  • Diziler için kısa çizgiler
  • Bir yorumu belirtmek için kare işaretleri

YAML, başlangıçta XML'i basitleştirmek için oluşturulmuştur.

Belge örnekleri: YAML ve JSON

Bir gömleğin ürün verilerini içeren bir belgenin YAML ve JSON'da nasıl görüneceğine ilişkin örnekleri burada bulabilirsiniz.

YAML

JSON

type: T-Shirt

price: 20.00

sizes:

  • S
  • M
  • L

   reviews: # Note about reviews

  • username: user1

         rating: 4

         created_at: 2023-04-19T12:30:00Z

  • username: user2

         rating: 5

         created_at: 2023-05-02T15:00:00Z

{

  "product": {

    "type": "T-Shirt",

    "price": 20.00,

    "sizes": ["S", "M", "L"]

    "reviews": {

      { "username": "user1”, "rating": 4, "created_at": "2023-04-19T12:30:00Z" },

      { "username": "user2”, "rating": 5, "created_at": "2023-05-02T15:00:00Z" }

    }

  }

}

Temel farklar: YAML ve JSON

YAML söz dizimi nedeniyle, özellikle geliştirici olmayanlar için bir YAML dosyasını okumak, anlamak ve yazmak JSON'dan daha kolay kabul edilir. Diğer önemli farklılıkları daha sonra ele alacağız.

Veri türleri

JSON biçimi aşağıdaki veri türlerini destekler:

  • Sayı
  • Boole
  • Boş
  • Dize
  • Dizi
  • Nesne (iç içe geçmiş anahtar-değer çiftleri koleksiyonu)

YAML biçimi, herhangi bir dinamik programlama dilinin tüm yerel veri türlerini destekler. Örneğin, dizilerden (listeler), skalerlerden (sayılar ve dizeler gibi) ve eşlemelerden (anahtar-değer çiftleri) oluşan iç içe veri koleksiyonlarını destekler. Bu destek, daha karmaşık veri yapıları oluşturmanıza olanak tanır. 

Yerleşik destek

JSON, birçok farklı programlama dili ile birlikte yaygın olarak kullanılmaktadır. Örneğin JavaScript, JSON'ı ayrıştırmak için yerleşik destek sunar. Python Standart Kitaplığı, JSON'ı da içerir ve bir JSON kitaplığı, PHP 5.2'de yerleşik olarak bulunur. Benzer şekilde, 50'den fazla popüler dil, çeşitli paketler ve kütüphaneler aracılığıyla JSON'ı desteklemektedir.

Buna karşılık, hiçbir popüler dilde YAML için yerleşik destek yoktur. Bunun yerine, geliştiricilerin kitaplıkları yüklemesi ve kullanması gerekir. Python için PyYAML ve C için LibYAML, iki popüler YAML ayrıştırıcısıdır. 

Sürüm oluşturma

Git gibi sürüm oluşturma yazılımları aracılığıyla hem JSON hem de YAML sürümleri oluşturabilirsiniz. Bununla birlikte, sürümler arasında YAML dosyalarındaki değişiklikleri taramak ve anlamak daha kolay kabul edilir.

Yorumlar

JSON veri biçiminde yorumlar için destek yoktur. Geliştiriciler, bunun bir yolu olarak bir yorum anahtar-değer çifti tanımlamalıdır.

Bir YAML dosyasında, yorumlar bir hash sembolünü izler.

Kullanım zamanı: YAML ve JSON

JavaScript ile yaygın destek ve entegrasyon sayesinde JSON, YAML'ye kıyasla çoğu kullanım örneği için daha popüler bir veri serileştirme biçimidir. JSON; dağıtılmış yazılım iletişimlerinde, web uygulamalarında, yapılandırma dosyalarında ve API'lerde yaygın olarak kullanılmaktadır.

YAML, veri yazma ve insan tarafından okunabilir biçimi dikkate alındığında daha iyi bir seçim gibi görünse de çapraz uyumluluk için genellikle JSON tercih edilir. Bunun nedeni, birçok uygulama ve hizmetin halihazırda JSON veri biçimini ayrıştırmasıdır.

Öte yandan YAML, okunabilirliği ve yorumların desteklenmesi nedeniyle belirli bilgi işlem alanlarında güçlü bir varlık kazanmıştır. Özellikle, YAML birçok otomasyon, DevOps ve kod olarak altyapı (IaC) aracı ve hizmetinde yapılandırma dosyaları için birincil veri serileştirme biçimidir. Örneğin, YAML genellikle Docker ve Kubernetes dosyalarında kullanılır.

YAML ayrıca şu Amazon Web Services (AWS) tekliflerinde yapılandırma dosyaları yazmak için de kullanılır: AWS CloudFormation, AWS Sunucusuz Uygulama Modeli (AWS SAM) ve AWS CodeBuild.

Farkların özeti: YAML ve JSON

 

JSON

YAML

Bu nedir?

Yazılım uygulamaları ile hizmetleri arasında yapılandırılmış veri alışverişi için bir veri serileştirme biçimi. Uygulama kullanımına, insan kullanımından daha fazla öncelik verir. 

Yazılım uygulamaları ile hizmetleri arasında yapılandırılmış veri alışverişi için bir veri serileştirme biçimi. İnsan kullanımına, uygulama kullanımından daha fazla öncelik verir.

Ana kullanım örnekleri

Platformlar, diller, dağıtılmış yazılım iletişimleri, web uygulamaları, yapılandırma dosyaları ve API'ler arasında yaygındır.

Çoğu otomasyon, DevOps ve kod olarak altyapı (IaC) araçları ve hizmetlerindeki yapılandırma dosyaları.

Okunabilirlik

Kolay.

En kolay.

Veri türleri

Sayı, Boole, boş, dize, dizi ve nesne.

Diziler, skalerler ve eşlemeler içeren iç içe veri koleksiyonları aracılığıyla tüm veri türlerini destekler.

Yorumları destekler

Hayır.

Evet.

Veri nesnelerini değer olarak destekler

Evet.

Hayır.

Sürüm Oluşturma

Evet ancak sürümler arasındaki farkları bir bakışta taramak ve anlamak o kadar kolay değildir.

Evet ve sürümler arasındaki farkları bir bakışta taramak ve anlamak kolaydır.

AWS, YAML ve JSON gereksinimlerinizi nasıl destekleyebilir?

Tüm AWS veri entegrasyon hizmetleri JSON dosyalarını işleyebilir. İlgili üç AWS hizmetini burada bulabilirsiniz:

  • AWS Glue, sunucusuz bir veri entegrasyonu hizmetidir. AWS Glue ile analiz, makine öğrenimi ve uygulama geliştirme için verileri keşfedebilir, hazırlayabilir ve birleştirebilirsiniz.
  • Amazon Basit Sıra Hizmeti (Amazon SQS), tam olarak yönetilen bir mesaj kuyruğa alma hizmetidir. Yazılım bileşenleri arasında her hacimde mesaj göndermek, depolamak ve almak için bunu kullanabilirsiniz. Amazon SQS mesajları; XML, JSON ve biçimlendirilmemiş metin dahil olmak üzere 256 KB'a kadar metin verisi içerir.
  • Amazon DocumentDB (MongoDB uyumlu), tam olarak yönetilen bir yerel JSON belge veritabanıdır. Amazon DocumentDB, kritik belge iş yüklerini altyapıyı yönetmeden neredeyse her ölçekte çalıştırmayı kolay ve uygun maliyetli hale getirir.

Benzer şekilde, AWS'deki geliştirici araçları da çeşitli dağıtım hizmetlerinde YAML dosyalarını destekler. Aşağıda iki örnek verilmiştir:

  • AWS Step Functions; AWS Lambda, Amazon Basit Bildirim Hizmeti (Amazon SNS) ve Amazon DynamoDB gibi AWS hizmetlerini kullanarak dayanıklı sunucusuz iş akışları oluşturmanıza olanak tanır. Step Functions ayrıca YAML durum makine tanımlarını da destekler. Bu, iş akışlarını sahip olduğunuz kod olarak altyapı (IaC) ile aynı dilde tanımlamanıza imkan tanır.
  • AWS App2Container, Java ve .NET web uygulamalarını container biçimine taşımak ve modernize etmek için kullanabileceğiniz bir komut satırı aracıdır. Amazon Esnek Container Hizmeti (Amazon ECS) görev tanımları ve Kubernetes dağıtımı için YAML dosyaları oluşturur. Ayrıca güvenlik ve ölçeklenebilirlik için AWS en iyi uygulamalarını da takip eder.

Hemen bir hesap oluşturarak AWS'de YAML ve JSON'ı kullanmaya başlayın.