Adatok mozgatása CSV, JSON, YAML és XML között
Az adat ritkán marad egy formátumban. Egy jelentés táblázatként érkezik, egy API JSON-t akar, egy telepítési folyamat YAML-t vár, valahol a pincében pedig egy régi szolgáltatás még mindig XML-ül beszél. Az adatokkal való munka napi frusztrációjának nagy része nem is maga az adat, hanem az, hogy a meglévő formából abba a formába kell hozni, amit valami más igényel. Ez az egész, amiről egy adatkonverter szól: strukturált szöveget vesz az egyik jelölésrendszerben, és újra kiadja egy másikban, anélkül hogy elveszne a jelentés útközben.
A Speedor konverterei teljes egészében a böngésződben futnak. Beillesztesz, kattintasz, kimásolod az eredményt. Semmi nem kerül feltöltésre, semmi nem kerül naplózásra, és semmi nem hagyja el a gépedet. Aki valaha is habozott, mielőtt egy ügyfélexportot bedobott volna egy véletlenszerű weboldalra, annak pontosan ez a csak-helyi felépítés a lényeg.
Miben jó valójában az egyes formátum
Hasznos tudni, miért léteznek ezek a formátumok, mielőtt elkezdesz köztük váltogatni, mert mindegyiket más feladatra építették.
A CSV a lapos, vesszővel elválasztott rács, amit a táblázatkezelők szeretnek. Természeténél fogva táblázatos: sorok és oszlopok, semmi beágyazás. Nyisd meg Excelben, Google Sheetsben vagy Numbersben, és egyszerűen működik. A csapda az, hogy a CSV-nek nincs típusfogalma. A 007 érték lehet karakterlánc, szám vagy irányítószám, és a CSV nem árulja el, melyik.
A JSON a modern web lingua francája. Szinte minden API, amit valaha hívni fogsz, ezt beszéli. A JSON kezeli a beágyazást, a tömböket és néhány valódi típust (karakterlánc, szám, logikai érték, null), ami sokkal kifejezőbbé teszi egy lapos táblánál. Kompakt, gépbarát és mindenhol támogatott.
A YAML a JSON olvashatóbb unokatestvére. Behúzást használ zárójelek helyett, támogatja a megjegyzéseket, és általában a konfigurációs fájlok, a Docker Compose, a Kubernetes-manifesztumok és a CI-folyamatok kedvenc formátuma. Amikor egy embernek kézzel kell szerkesztenie valamit, a YAML általában kíméletesebb a szemnek.
Az XML a bölcs öreg. Bőbeszédű, tag-nehéz, és még mindig mélyen beágyazódott a vállalati rendszerekbe, SOAP-szolgáltatásokba, pénzügyi üzenetkezelésbe és olyan dokumentumszabványokba, mint az RSS. Zöldmezős projektekben ritkábban találkozol vele, de amikor igen, akkor tényleg szükséged van rá.

Hol történnek valójában a konverziók
A forgatókönyvek meglehetősen konkrétak, amint elkezded nézni őket. Mondjuk a marketing átad neked egy 4000 kontaktot tartalmazó táblázatot, a regisztrációs API pedig csak JSON tömböt fogad el. Exportálod a táblát CSV-be, átfuttatod a CSV to JSON eszközön, és máris van egy POST-olásra kész payloadod. Nincs szükség glue scriptre, pandas-ra, vagy mérnökre való várakozásra.
Vagy visszahúzol egy darab JSON-t ugyanabból az API-ból, és be szeretnéd tenni egy konfigurációs fájlba, amelyet a szolgáltatásod induláskor olvas be. Konvertáld a JSON to YAML eszközzel, és kapsz valami tisztát és kommentezhetőt, ami pontosan illeszkedik a repódba. A másik irány is működik, amikor egy eszköz csak JSON-t fogad el, de a konfigurációd YAML-ban él.
És aztán ott van az az integráció, amit senki sem élvez: egy partnerrendszer, amely csak XML-t fogad be. A payloadodat JSON-ban építed fel, mert az alkalmazásod így gondolkodik, majd a határon konvertálod XML-re. A forma ugyanaz marad, csak a szintaxis változik.
Buktatók, amelyeket érdemes ismerni
A formátumkonverzió nem mindig veszteségmentes, és úgy tenni, mintha az lenne, hibákhoz vezet. Néhány dolog, amire érdemes odafigyelni:
A CSV elfelejti a típusokat. Mivel minden cella egyszerűen szöveg, a számok, logikai értékek és dátumok is karakterláncként jönnek ki, hacsak a konverter nem találgat helyetted. Ha a true-nak logikai értéknek kell lennie, nem a "true" szónak, ellenőrizd a kimenetet, mielőtt éles környezetbe engednéd.
A YAML törődik a szóközökkel. A behúzás nem díszítés a YAML-ban, hanem szerkezeti elem. Egyetlen elkóborolt szóköz megváltoztathatja, melyik kulcshoz tartozik egy érték, a tabulátorok pedig teljesen tiltottak. Bármilyen JSON-ból YAML-ba oda-vissza konverzió után érdemes egy gyors ellenőrzést tartani, vagy visszafuttatni az eredményt egy JSON-formázón, hogy megerősítsd, a struktúra túlélte.
Az XML és a JSON nem térképeződik tisztán egymásra. A JSON-nak vannak tömbjei; az XML-nek ismételt elemei. A JSON-nak sehol nincsenek attribútumai; az XML-nek mindenhol vannak. A legtöbb konverter egy értelmes konvenciót választ, de ha az XML-ed erősen használ attribútumokat, az általa generált JSON kicsit másképp fog kinézni, mint egy kézzel írt JSON. Ez elvárt, nem hiba.
A beágyazás mélysége számít. A CSV lapos, így egy mélyen beágyazott JSON nem mindig omlik oszlopokba a kulcsok lapítása nélkül (gondolj a address.city-re). A másik irányba haladva egy lapos CSV lapos tömbbé válik, soha nem fává.

Miért fontos itt a csak-helyi feldolgozás
Rengeteg olyan adat van, amit konvertálni szeretnél, de nem a tiéd, hogy megoszd. Felhasználói rekordok, belső konfigurációk, egy válaszba temetett API-kulcsok, pénzügyi sorok. Sok online konverter csendben elküldi a beillesztett adatot egy szerverre, hogy elvégezze a munkát. A Speedor nem. A konverziós logika a böngésződ lapján fut, az adat soha nem lépi át a hálózatot, és a lap bezárása maga a takarítás. Gyorsabb is, mivel nincs feltöltési oda-vissza út, és offline is működik, amint az oldal betöltődött. Ingyenes, regisztráció és kvóta nélkül.
Gyakran ismételt kérdések
Feltöltésre kerül az adatom valahova, amikor konvertálom?
Nem. Minden konverzió helyben, a böngésződben fut JavaScripttel. Az adatod soha nem hagyja el az eszközödet, és soha nem küldik el egy szerverre, ezért ezek az eszközök akkor is működnek, ha offline vagy.
Konvertálhatok CSV-t JSON-ná kód írása nélkül?
Igen. Illeszd be a CSV-det a konverterbe, kattints a konvertálásra, és másold ki az eredményül kapott JSON tömböt. Az első sort a program oszlopfejlécként kezeli, amelyek az egyes objektumok kulcsaivá válnak.
Miért jelennek meg a konvertált JSON-omban a számok karakterláncként?
A CSV-nek nincs adattípus-fogalma, így minden érték szövegként indul. Néhány konverter megpróbálja automatikusan felismerni a számokat és a logikai értékeket, de kétség esetén karakterláncként hagyják az értékeket, hogy elkerüljék az olyan dolgok sérülését, mint a vezető nullás irányítószámok vagy azonosítók.
Mi a különbség a JSON és a YAML között?
Ugyanazokat az adattípusokat reprezentálják, de a YAML behúzást használ kapcsos és szögletes zárójelek helyett, megengedi a megjegyzéseket, és általában könnyebben olvasható és szerkeszthető az emberek számára. A JSON kompaktabb, és a legtöbb webes API alapértelmezett formátuma.
A konverzió ezek között a formátumok között mindig veszteségmentes?
Általában igen, de nem mindig. A JSON, a YAML és az XML a legtöbb esetben jól megfeleltethető egymásnak. A legtrükkösebb párosítás a CSV, amely lapos és típus nélküli, valamint az XML, amely másképp kezeli az attribútumokat és az ismételt elemeket, mint a JSON tömbök. Mindig ellenőrizd a kimenetet fontos adatoknál.
Működnek ezek a konverterek nagy fájlokkal is?
A legtöbb mindennapi fájlt kényelmesen kezelik, mivel a munka a saját gépeden történik. A teljesítmény az eszközödtől függ, nem egy szervertől, így a nagyon nagy fájlokat elsősorban a böngésződ memóriája korlátozza.
