CSV'den JSON'a dönüştürücü
CSV'yi JSON'a veya JSON'u CSV'ye dönüştürün; ayırıcı algılama, başlık işleme ve kayıpsız tür dönüştürme ile.
Çıktı burada görünecek
Bu araç ne yapar
CSV, elektronik tabloların, veritabanı dışa aktarımlarının ve analiz panolarının size verdiği şeydir; JSON ise API'lerin ve kodun istediği şeydir. Bu araç ikisi arasında her iki yönde de, tarayıcınızda dönüştürür. CSV yapıştırın, bir JSON dizisi alırsınız — başlık satırıyla anahtarlanmış nesneler ya da veride başlık yoksa düz diziler. Yönü değiştirin, bir JSON dizisi CSV olur, her değer tam olarak gerektiği kadar tırnaklanmış.
İş cihazınızda gerçekleşir; bu önemlidir, çünkü CSV, insanların müşteri listelerini, faturaları ve analiz özetlerini dışa aktardığı biçimdir. Bunların hiçbiri hiçbir yere yüklenmez.
Virgüllere göre bölmenin neden yeterli olmadığı
CSV'yi okumanın apaçık yolu — her satırı virgüllere göre bölmek — gerçek dosyalarda bozulur, çünkü biçimin bir kaçış mekanizması vardır. Çift tırnak içine alınmış bir alan, ayırıcıyı, art arda iki tırnak olarak yazılmış değişmez bir tırnağı ya da hatta satır sonlarını içerebilir; bu durumda bir kayıt dosyanın birkaç satırına yayılır. Bu araç gerçek kuralları (RFC 4180) karakter karakter bir ayrıştırıcıyla uygular; böylece üç durum da olduğu gibi gelir.
name,note Grace,"rear admiral, USN" Ada,"she said ""hello""" Alan,"two lines"
O dört kaydın, fazladan virgüllere, tırnaklara ve satır sonuna rağmen her biri iki alanı vardır. Tırnaklama hatalıysa — bir alan bir tırnak açar ve onu asla kapatmaz — sessizce bozulmuş bir tablo yerine kaçak tırnağın başladığı satır ve sütunu alırsınız.
Ayırıcı çoğu zaman bir virgül değildir
Adına rağmen, virgülle ayrılmış değerler sıklıkla öyle değildir. Virgülün ondalık ayırıcı olduğu yerel ayarlarda — kıta Avrupası'nın çoğu — Excel bunun yerine noktalı virgülle dışa aktarır, çünkü orada 1,50 bir sayıdır. Veritabanı ve komut satırı araçları çoğu zaman sekmeyle ayrılmış veri yayar ve günlük hatları dikey çizgi gibi. Bunlardan birini yalnızca virgül kabul eden bir araca yapıştırmak, var olan en yaygın CSV sıkıntısı olan tek, çok geniş bir sütun üretir.
Bu yüzden ayırıcı varsayılmaz, algılanır. Her aday denenir ve kazanan, her satırda aynı sayıda sütun veren olandır — en yüksek sayı değil, tutarlılık, çünkü ondalık virgüllerle dolu bir dosya aksi hâlde virgülle ayrılmış görünürdü. Algılanan ayırıcı her zaman gösterilir ve tahmin yanlışsa geçersiz kılabilirsiniz.
Başlıklar ve çıktının şekli
«ilk satır bir başlıktır» açıkken, o satır anahtar adlarını sağlar ve çıktı bir nesne dizisidir — neredeyse her API'nin beklediği şekil. Kapalıyken, her satır bir değerler dizisi olur; doğrudan veriyle başlayan bir dosya için istediğiniz şey budur.
- Başlıktan daha az alanı olan bir satır, undefined değerli anahtarlar yerine eksik sütunlar için boş dizeler alır.
- Yinelenen başlık adları, birbirinin üzerine yazmak (bu sessizce sütunları düşürürdü) yerine benzersiz yapılır (id, id_2, id_3).
- Boş bir başlık hücresi column_2, column_3 vb. olur; böylece hiçbir anahtar boş dize değildir.
- Boş satırlar, elektronik tablo içe aktarıcılarının yaptığı gibi atlanır — yapıştırılan bir dosya çoğu zaman başıboş bir satır sonuyla biter ve oradaki boş değerlerden oluşan bir satır bir hata gibi görünür.
Veri kaybedemeyen tür dönüşümü
Her CSV alanı metindir. Sayısal görünen metni JSON sayılarına dönüştürmek genellikle istediğiniz şeydir — ama verinin sessizce yok edilmesinin de yolu budur. 01234 posta kodu 1234 olur. 20 haneli bir sipariş numarası yuvarlanmış bir kayan sayı olur. 1.50 olarak yazılan bir fiyat sondaki sıfırını yitirir.
Burada kullanılan kural, özel durumlardan oluşan bir liste olmadan tüm bunlardan kaçınır: bir değer, ancak onu tekrar metne çevirmek özgününü tam olarak yeniden ürettiğinde sayı olur. 42 üretir, dolayısıyla dönüşür. 01234 üretmez, dolayısıyla dize kalır. 1.50, +5, 1e5 ya da double'ların kesinliği yitirdiği noktanın ötesindeki hiçbir tam sayı da üretmez. true ve false dizeleri mantıksal değerlere dönüşür; boş bir alan null olmak yerine boş bir dize kalır, çünkü CSV «değer yok» ile «boş değer» arasındaki farkı ifade edemez ve bir tane uydurmak bilgi uydurmak olurdu.
CSV'ye geri dönme
Diğer yönde, bir nesne dizisi, sütunları tüm anahtarların ilk göründükleri sıradaki birleşimi olan bir tabloya dönüşür — böylece farklı anahtarlara sahip satırlar yine hizalanır ve eksik bir anahtar boş bir hücre üretir. Bir dizi dizisi, satır satır yazılır. Tırnaklama yalnızca biçimin gerektirdiği yerde uygulanır: ayırıcıyı, bir tırnağı ya da bir satır sonunu içeren bir değer, iç tırnakları ikiye katlanmış olarak sarılır.
CSV'nin temsil etmenin bir yolu olmadığı değerler — iç içe bir nesne ya da dizi — düzleştirilmek ya da düşürülmek yerine hücresinin içinde JSON olarak yazılır; böylece bir dönüşümde hiçbir şey kaybolmaz. Null, boş bir hücre olur.
Sıkça sorulan sorular
- Dosyam neden tek dev bir sütun olarak çıktı?
- Ayırıcı, aracın kullandığı şey değil. Bu genellikle bir noktalı virgül dosyası (virgülün ondalık ayırıcı olduğu Avrupa yerel ayarlarında Excel için standart) ya da sekmeyle ayrılmış bir dışa aktarım demektir. Algılama bunu normalde yakalar — hangi ayırıcının gösterildiğini kontrol edin ve yanlış tahmin ettiyse açılır menüden başka birini seçin.
- Kimliğim JSON'da neden hâlâ bir dize?
- Çünkü dönüştürmek onu değiştirir. Sayılar yalnızca dönüşüm tam olarak tersine çevrilebilir olduğunda dönüşür; böylece 01234 baştaki sıfırını korur ve uzun kimlikler her basamağı korur. Onları gerçekten sayı olarak istiyorsanız, verinizin baştaki sıfır olmadan yazılması gerekir ya da kesinliği denetlediğiniz yerde sonradan dönüştürebilirsiniz.
- Bir alanın içindeki virgüllere ve tırnaklara ne olur?
- Korunurlar. Girerken, tırnaklı bir alan virgüller, ikiye katlanmış tırnaklar ve hatta satır sonları içerebilir; çıkarken, ayırıcıyı, bir tırnağı ya da bir satır sonunu içeren herhangi bir değer tırnaklanır ve iç tırnakları ikiye katlanır. Bir değer, CSV → JSON → CSV boyunca değişmeden gidip gelir.
- Verim herhangi bir yere yükleniyor mu?
- Hayır. Ayrıştırma ve dönüştürme tümüyle tarayıcınızda çalışır; böylece genellikle CSV'de yaşayan müşteri listeleri, dışa aktarımlar ve raporlar cihazınızdan asla çıkmaz.