Hranice převodu JSON ↔ YAML a XML
Tvzení, že JSON je podmnožinou YAML, zaručuje jen jeden směr a XML nemá žádné oficiální mapování do JSON – všechno stojí na konvenci.
Převod mezi JSON a YAML, XML, CSV, TypeScriptem, Javou, Go a SQL nikdy není bezztrátový. Podstatné je být výslovný v tom, kde ke ztrátě dochází.
8 článkůTvzení, že JSON je podmnožinou YAML, zaručuje jen jeden směr a XML nemá žádné oficiální mapování do JSON – všechno stojí na konvenci.
CSV je dvourozměrné, JSON má tvar stromu. Obtížná část převodu není kód – je to rozhodnutí předem, jak se zplošťují pole a jak se zachovávají typy.
Vnořené struktury, nekonzistentní pole a pole polí jsou místa, kde se převod JSON do tabulky láme. Čtyři přístupy seřazené podle času k výsledku, každý s kompromisy.
Převod JSON na SQL INSERT skrývá rozdělování vnořených tabulek, NULL versus chybějící hodnotu, escapování a rozdíly mezi dialekty. Spustitelné příkazy a srovnávací tabulky pro každou past.
Vygenerovat rozhraní ze vzorku JSON je jen polovina práce: volitelná pole, null, sjednocení, data a velká celá čísla potřebují lidský zásah a typy neprovádějí žádnou validaci za běhu.
Nejčastěji kopírovaný příkaz z návodů, yq -P input.json > output.yaml, na yq v4 pořád vydává JSON. Článek měří yq v4.44.6, PyYAML 6.0.3 a js-yaml na vzorku 2.39 MB, vysvětluje, proč formát výstupu určuje přípona vstupu, a dává správné zápisy pro dávkový převod, uvozovky, odsazení a přesnost velkých celých čísel.
Devět experimentů na skutečném konvertoru: strategie „klíče z prvního záznamu" potichu ztrácí pole, null, absence i prázdný řetězec se stanou všichni prázdnými buňkami, 20místné celé číslo ztratí přesnost už v JSON.parse a tečka v klíči srazí dva různé cesty do jednoho sloupce. Jak se hlavička staví, které hodnoty se deformují a jak zvolit strategii podle toho, co s daty bude dále.
Praktický pohled na to, co generátor JSON-to-Java skutečně emituje — čísla se stanou Double, vnořené objekty statickými vnitřními třídami a nevyprodukuje se jediná Jacksonova anotace. Peněžní přesnost, přejmenování polí, smazání typů, neznámá pole a data jsou pět věcí, které musíte doplnit sami, každý s kódem připraveným ke zkopírování.