Bu veri biçimleri nelerdir?

Programlar ayarlar, kayıtlar ve listeler gibi yapılandırılmış verileri, her biri veriyi kendine özgü şekilde yazan metin biçimlerinde saklar ve paylaşır. Bir program verileri başka bir programın okuyamadığı bir biçimde sunduğunda ya da söz konusu iş için bir biçimi okumak veya düzenlemek daha kolay olduğunda dönüştürücü işe yarar.

Biçim Veriyi yazma şekli Nerelerde kullanılır
JSON Süslü parantezler içinde nesneler, köşeli parantezler içinde listeler, çift tırnak içinde metin Web API’leri ve uygulama ayarları
YAML Girintili key: value satırları, - ile başlayan liste öğeleri Docker Compose, Kubernetes ve CI işlem hattı dosyaları
XML Öznitelik içerebilen etiketler içindeki öğeler Belgeler, RSS akışları ve SOAP web hizmetleri
TOML [table] başlıkları altında key = value satırları Cargo.toml ve pyproject.toml gibi yapılandırma dosyaları
TOON Girintili satırlar; kayıt listeleri, alanlarının altında satırlar halinde AI dil modellerine gönderilen yapılandırılmış veriler
CSV Bir başlık satırı, ardından her kayıt için bir satır; değerler virgülle ayrılır Elektronik tablolar ve veritabanı dışa aktarımları
TSV CSV gibidir, ancak değerler arasında sekme karakterleri bulunur Elektronik tablodan kopyalanan hücreler
MessagePack Burada onaltılık baytlar olarak gösterilen ikili veriler Programlar arasındaki kompakt mesajlar
JSON5 Yorumlara, tek tırnaklara ve tırnaksız anahtarlara da izin veren JSON Elle yazılan yapılandırma dosyaları
JSONL Her satırda bir JSON değeri; JSON Lines veya NDJSON olarak da bilinir Günlükler ve veri kümeleri
INI [section] başlıkları altında key = value satırları php.ini gibi program ayar dosyaları
Properties Noktalı anahtarlar içeren key = value satırları Spring Boot'un application.properties dosyaları gibi Java uygulamaları

Araç açıklaması

Bu araç verileri şu 12 biçim arasında dönüştürür: JSON, YAML, XML, TOML, TOON, CSV, TSV, MessagePack, JSON5, JSONL, INI ve Java properties. Buradaki tüm veri biçimi dönüştürücüleri aynı şekilde çalışır; genel Veri Biçimi Dönüştürücü'den JSON'dan YAML'a, CSV'den JSON'a veya XML'den JSON'a gibi tek bir çift için olanlara kadar hepsi aynı mantığı izler: araç, adında belirtilen biçimlerle açılır ve Kaynak ile Hedef menülerinden başka biçimler seçilebilir. Verilerinizi yapıştırın veya yazın; sonuç, sözdizimi vurgulaması olan bir kod düzenleyicide siz yazdıkça görüntülenir ve kopyalanmaya hazır olur. Değiştirme düğmesi dönüşüm yönünü tersine çevirir ve sonucu yeni girdi olarak kullanır.

Girdi kaynak biçiminde geçerli olmadığında hata mesajı, genellikle sorunun bulunduğu satır ve sütunla birlikte, neyin yanlış olduğunu belirtir.

Verileriniz tarayıcınızda dönüştürülür ve hiçbir zaman yüklenmez.

Örnek

Bu JSON:

{
  "users": [
    { "id": 1, "name": "Ann", "admin": true },
    { "id": 2, "name": "Bo", "admin": false }
  ]
}

şu YAML'a dönüşür:

users:
  - id: 1
    name: Ann
    admin: true
  - id: 2
    name: Bo
    admin: false

kullanıcı başına bir satır içeren şu CSV'ye:

id,name,admin
1,Ann,true
2,Bo,false

ve şu TOON'a:

users[2]{id,name,admin}:
  1,Ann,true
  2,Bo,false

Biçimler birbirine nasıl dönüştürülür?

Biçimlerin tümü aynı türde verileri saklamaz; bu nedenle bazı dönüşümlerde şu kurallar uygulanır:

  • CSV ve TSV bir tablo saklar. İlk satır sütun adlarını içerir ve diğer her satır bir nesneye dönüşür. İç içe nesneler, yollarına göre adlandırılan sütunlara; listeler ise hücrelerinde JSON metnine dönüşür. Örneğin {"name": "Ann", "address": {"city": "Oslo"}, "tags": ["a", "b"]} verisi name, address.city ve tags sütunlarına dönüşür. Tersine dönüştürüldüğünde bu sütunlar yeniden iç içe nesnelere ve listelere dönüşür. Veriler {"users": [...]} gibi tek bir liste içeren bir nesne olduğunda satırlar bu listenin öğelerinden oluşur; listelerden oluşan bir liste ise başlıksız satırlara dönüşür.
  • Metin değerleri: CSV, TSV, XML, INI ve properties yalnızca metin saklar; bu nedenle dönüştürücüler true ve false değerlerini true ve false'a, 42 veya 3.5 gibi düz biçimde yazılmış sayıları ise sayılara dönüştürür. 007, 1.50 veya 1e3 gibi değerler metin olarak kalır; böylece posta kodları ve sürüm numaralarının özgün biçimi korunur.
  • XML öznitelikleri @ ile başlayan anahtarlara dönüşür; öznitelikleri olan bir öğenin metni ise #text olur: <price currency="USD">44.95</price>, {"@currency": "USD", "#text": 44.95} biçimine dönüşür. Tekrarlanan öğeler listeye dönüşür. XML'e dönüştürürken @ ile başlayan anahtarlar yeniden öznitelik olur. Değeri liste olmayan tek anahtarlı bir nesne, kök öğeye dönüşür. Diğer veriler <root> öğesinin içine yerleştirilir; en üst düzeydeki her liste öğesi bir <item> öğesi olur. XML adlarında kullanılamayan boşluk gibi karakterler _ karakterine dönüşür.
  • TOML, INI ve properties en üst düzeyde yalnızca adlandırılmış değerleri saklayabilir; bu nedenle liste olan veriler items adı altında, tek bir değer ise value adı altında yazılır. TOML'de null değeri bulunmadığından null değerler dışarıda bırakılır.
  • INI iç içe nesneleri [server.ssl] gibi bölümler olarak, değer listelerini key[] = value satırları olarak, nesne listelerini ise [users.0] gibi konumlarına göre adlandırılan bölümler olarak yazar.
  • Properties anahtarları, iç içe adları noktalarla birleştirir ve liste öğelerini app.hosts[0] gibi köşeli parantezler içinde numaralandırır; Spring Boot da bu yöntemi kullanır. YAML veya JSON'a dönüştürüldüğünde bu anahtarlar iç içe nesnelere ve listelere dönüşür; böylece bir application.properties dosyası, application.yml dosyasının düzenine dönüştürülür. Latin-1 dışındaki karakterler \u kaçış dizileriyle yazılır.
  • YAML sonuçlarında on, yes veya bir tarih gibi YAML 1.1 okuyucularının farklı yorumlayabileceği metinler tırnak içine alınır; böylece YAML 1.1 ve YAML 1.2 okuyucuları aynı veriyi elde eder. --- ile ayrılmış birden fazla belge içeren YAML dosyası, bu belgelerin listesine dönüşür ve << birleştirme anahtarları doldurulur.
  • MessagePack ikili biçimdedir; bu nedenle araçlar veriyi onaltılık baytlar olarak okur ve yazar: {"a": 1} değeri 81 A1 61 01 biçimindedir. Girdide boşluklar, virgüller ve her baytın önünde 0x bulunabilir. Art arda gelen birden fazla mesaj listeye dönüşür.
  • JSONL sonuçlarında listenin her öğesi ayrı bir satırda yer alır.
  • JavaScript sayılarıyla tam olarak gösterilemeyecek kadar büyük 64 bit kimlikler gibi tam sayılardaki tüm basamaklar korunur.
  • TOML tarih ve saatleri ile MessagePack zaman damgaları, 1979-05-27T07:32:00Z gibi metinlere dönüşür.

İpuçları

  • Elektronik tablodaki hücreleri dönüştürmek için hücreleri kopyalayıp TSV olarak yapıştırın: elektronik tablo uygulamaları hücreleri sekmeyle ayrılmış metin olarak kopyalar.
  • CSV ve TSV, benzer kayıtlardan oluşan listeler için uygundur. Derinlemesine iç içe verilerin okunması YAML, TOML veya TOON biçimlerinde daha kolaydır.
  • YAML, XML, TOML, JSON5, INI ve properties dosyalarındaki yorumlar korunmaz; dönüştürücüler yalnızca verileri aktarır.