W świecie nowoczesnych aplikacji wymiana danych między systemami to codzienność. W pierwszej kolejności sięga się zwykle po najbardziej rozpoznawalne formaty, takie jak JSON i XML – i słusznie, bo oba są powszechnie stosowane i dobrze udokumentowane. Te dwa standardy zostały już wcześniej omówione, dlatego teraz pora przyjrzeć się alternatywom, które również odgrywają ważną rolę w codziennej pracy programisty.
YAML (YAML Ain’t Markup Language)
YAML to format, który jest często używany w konfiguracjach aplikacji, ponieważ jest bardziej przyjazny dla człowieka niż JSON i XML. YAML stawia na czytelność, a jego składnia jest prostsza i mniej „ciężka” niż w pozostałych formatach. W YAML-u nie ma potrzeby stosowania nawiasów czy cudzysłowów, co ułatwia jego edycję.
Przykład danych YAML zawierający dane osobowe. Pole address posiada zagnieżdżony obiekt z dwoma polami. Pole phones jest tablicą.
YAML jest wykorzystywany w takich narzędziach jak Kubernetes czy Docker, gdzie pliki konfiguracyjne muszą być czytelne i łatwe w edycji.
CSV (Comma-Separated Values)
CSV to format, który najlepiej sprawdza się w przypadku danych tabelarycznych, takich jak dane z arkuszy kalkulacyjnych. CSV jest bardzo prostym formatem, w którym dane są oddzielane przecinkami lub innymi znakami rozdzielającymi. W przeciwieństwie do JSON, XML, oraz YAML – CSV nie obsługuje złożonych struktur danych, takich jak zagnieżdżone obiekty.
name,age,street,city,phone1,phone2
Marek Nowak,25,ul. Wodna 45,Poznań,583-396-005,124-492-268
Jan Kowalski,30,ul. Długa 12,Warszawa,123-456-789,987-654-321
Przykład danych CSV zawierający tabelę z danymi osób. Telefony zostały umieszczone w osobnych kolumnach, ponieważ CSV nie obsługuje tablic.
CSV jest popularny w aplikacjach, które muszą przetwarzać dane tabelaryczne, takie jak eksport danych z baz danych do arkuszy kalkulacyjnych.
PHP Serialize
PHP serialize to format specyficzny dla języka PHP, który pozwala na serializowanie obiektów PHP do łańcucha znaków, który może być przechowywany lub przesyłany. Po serializacji, obiekt może być deserializowany z powrotem do pierwotnej postaci obiektu PHP. Ten format jest używany głównie do przesyłania obiektów między różnymi sesjami lub zapisywania stanu aplikacji. Wykorzystuje go m.in. system WordPress.
Przykład kodu PHP z tablicą asocjacyjną. Funkcja serialize() przyjmuje jako argument dowolne dane języka i zwraca te dane zakodowane jako tekst.
a:4:{s:4:”name”;s:11:”Marek Nowak”;s:3:”age”;i:25;s:7:”address”;a:2:{s:6:”street”;s:12:”ul. Wodna 45″;s:4:”city”;s:7:”Poznań”;}s:6:”phones”;a:2:{i:0;s:11:”583-396-005″;i:1;s:11:”124-492-268″;}}
Zakodowana tablica asocjacyjna z przykładu u góry. Format jest mało czytelny.
Deserializacja, czyli proces odwrotny odbywa się poprzez funkcję unserialize(). Wtedy jako argument należy podać poprawne dane Serialize. Zaletą tego formatu jest fakt, iż pozwala na przechowywanie i przesyłanie obiektów w ich pierwotnej postaci, jednak jest to format specyficzny tylko dla PHP i nie jest powszechnie używany, poza tym ekosystemem.
Choć JSON i XML pozostają najbardziej uniwersalnymi formatami wymiany danych, warto znać również ich mniej oczywistych „kuzynów”. YAML wyróżnia się przejrzystością i prostotą, dzięki czemu idealnie nadaje się do plików konfiguracyjnych. CSV to prosty, lekki i szeroko wspierany format dla danych tabelarycznych – świetny do eksportu i analizy. Z kolei PHP Serialize to narzędzie bardzo specyficzne, ale niezwykle przydatne w obrębie samego języka PHP, szczególnie przy zapisie złożonych struktur danych.
Każdy z tych formatów ma swoje mocne i słabsze strony, dlatego wybór odpowiedniego zależy przede wszystkim od kontekstu – rodzaju danych, środowiska, w którym pracujemy, oraz oczekiwanego poziomu czytelności czy kompatybilności. Znajomość tych alternatyw pozwala pisać bardziej elastyczny, świadomy i dopasowany do sytuacji kod.