Datové procesy / 06
Převod JSON a XML do spolehlivého cílového modelu.
Data jsou technicky čitelná, a přesto odmítaná. Názvy polí, typy nebo struktury neodpovídají cílové aplikaci. Vytváříme dohledatelný mapping, který řeší i prázdné hodnoty, zvláštní případy a změny zdrojového formátu.
Výchozí stav
Syntaktická platnost ještě neznamená obchodní správnost.
XML rozhraní poskytuje produkty s atributy a namespaces. Cíl očekává JSON objekty, jednoznačné stringy a pole pro všechny varianty. Jediný XML element nesmí náhle vést k jinému cílovému typu než více elementů.
Zdrojový kontrakt, cílový kontrakt a transformační pravidla definujeme odděleně. Povinné hodnoty, null a prázdné stringy dostávají obchodní význam; čísla a časové údaje se nemění plošnou textovou konverzí.
Co zajišťuje DataSource
Cesty polí, typy a validace.
Modelovat
Zmapování polí, atributů, seznamů a referencí. Zpracování XML namespaces podle URI, bez spoléhání pouze na volitelně zvolené prefixy.
Transformovat
Implementace mappingu, konverzí typů a normalizace jako verzovaných pravidel. Výslovné zachování desetinné přesnosti, ID a časových pásem.
Validovat
Ověření zdrojového formátu a cílového kontraktu. Obchodní pravidla doplňují JSON Schema nebo XML Schema; neplatné scénáře hlásíme s výstižnou cestou pole.
Technický scénář / ilustrativní příklad
Z XML produktu vzniká jasně typovaný objekt.
Ilustrativní příklad s namespace a string ID. Prefix p je zaměnitelný; přiřazení určuje namespace URI. Cena zde záměrně zůstává desetinným stringem.
Vzorová data a navržená pravidla. Konkrétní rozhraní a obchodní pravidla se prověří pro váš projekt.
<p:product xmlns:p="urn:example:catalog" id="004218">
<p:price currency="EUR">49.90</p:price>
</p:product>
→ {
"sku": "004218",
"price": "49.90",
"currency": "EUR"
}
Ošetření chyb, bezpečnost a provoz
Viditelné řešení odchylek schématu.
Bezpečnost parseru
Zakázat nekontrolované externí XML entity a externí zdroje. Omezit velikost, hloubku a počet elementů; importovaná data nejsou důvěryhodné programy.
Změna verze
Dokumentovat verzi mappingu společně se zdrojovým schématem. Nová povinná pole ověřit na reprezentativních testovacích datech a kontrolovaně nasadit.
Kontext chyby
Uvést dotčený záznam a cestu pole. Citlivé payloady používat pouze výslovně schválenými, chráněnými diagnostickými cestami.
Odborné otázky
Detaily důležité před implementací.
JSON · XML · Namespaces · Datové typy · Mapping · Schéma
Je konverze bezeztrátová?
Pouze s dohodnutým modelem. XML zná atributy, namespaces a smíšený obsah; JSON je automaticky nezobrazuje rovnocenně.
Potřebujeme vždy schéma?
Ověřitelný kontrakt je důležitý. Formální schéma pomáhá, ale nenahrazuje pravidla, jako jsou platné reference produktů nebo přípustné změny stavů.
Co se stane s neznámými poli?
Podle kontraktu se ignorují, zachovají nebo odmítnou. Chování se stanoví výslovně, nerozhoduje se až v produkčním provozu.
Pro technické vyjasnění
Začít vaším konkrétním procesem.
Připravte anonymizované zdrojové příklady, cílové schéma, definice polí a problematické scénáře. Při ověřování pomůže prázdný seznam i struktura s jedním a více prvky.
V prvním rozhovoru vyjasníme dostupné přístupy, odpovědnost za data a omezený první datový tok. Poté dohodneme rozsah, odpovědnosti a podmínky.
Pro začátek stačí anonymizované příklady. V prvním dotazu neposílejte hesla, tokeny ani produkční data s osobními údaji.
Související úlohy
Další propojení v kontextu.
Automatizovat import CSV
Soubor přichází každý den. Někdo opraví sloupce, nahraje jej a následně kontroluje chybové zprávy. DataSource z této opakované ruční činnosti vytvoří dokumentovaný import s jasnými pravidly pro neúplná a chybná data.
Integrace REST API
Dokumentace existuje, testovací request funguje. V běžném provozu přesto chybějí data nebo vznikají duplicitní záznamy. DataSource propojí vaše REST API s konkrétním obchodním procesem a plánuje i případ, kdy odpověď nepřijde.
Automatizovat procesy produktových dat
ERP dodává kmenová data, PIM texty a dodavatel technické parametry. Ruční seznamy tyto informace propojují jen dočasně. Vytvoříme definovaný datový tok od autoritativního pole po ověřený export pro daný kanál.