V 4D v16 R4, jsme obohatili objektové příkazy tak, abyste mohli validovat objekty JSON. 4D v16 R5 jde ještě dál a zavádí podporu ukazatelů JSON. Skvělé – ale co je to ukazatel JSON a co s ním mohu dělat?
Stejně jako neukládáte údaje o firmě pro každého zaměstnance do záznamu v databázi (místo toho používáte odkaz na záznam o firmě), může být opravdu užitečné strukturovat dokument JSON pomocí částí, které lze opakovaně použít na mnoha místech.
Vezměme si například příklad objednávky na webové stránce; zákazník zadá dodací adresu a označí stejnou fakturační adresu. Místo duplikování informací o adrese můžeme definovat dodací adresu jako odkaz na fakturační adresu.
Dalším scénářem je definování objektu šablony obsahujícího výchozí vlastnosti uložené ve formátu JSON a sloučení některých vlastností s informacemi uloženými v samostatném souboru JSON.
Objekty, které obsahují cykly( tj. dva objekty, které se navzájem obsahují), nelze v JSONu řetězit. Ukazatele JSON jsou způsobem, jak vyjádřit cyklický odkaz při zachování kompatibility s formátem JSON.
KONCEPCE ukazatele JSON
Ukazatel JSON je standard, který definuje syntaxi řetězce, který lze použít k přístupu k určitému poli nebo hodnotě klíče ve stejném nebo jiném dokumentu JSON. Skládá se z řetězců oddělených znakem „/“. Tyto řetězce určují buď klíče v objektech, nebo indexy v polích. Syntaxe ukazatele JSON je definována v dokumentu RFC 6901.
Například tento objekt:
{ "foo": {"$ref": "#/bar"}, "bar": "42" }
lze přeložit jako:
{ "foo": "42", "bar": "42" }
PŘÍKAZ: NEW COMMAND
Proměnná JSON resolve pointers příkaz analyzuje všechny ukazatele JSON nalezené v objektu předaném jako parametr s ohledem na některá nastavení voleb (pokud existují). Příkaz pak vrátí objekt se stavem úspěšnosti, výslednou hodnotou a případným seznamem chyb.
NĚKOLIK PŘÍKLADŮ… to se vždycky hodí!
Podívejte se na naši ukázkovou databázi, abyste se dozvěděli (a pochopili) více o tom, jak ukazatele JSON fungují!
Kromě ukázky zde máme další příklad – vezměme proměnnou $object, která obsahuje následující údaje:
Pokud spustím níže uvedený kód:
$result:=JSON Resolve pointers($object)
TRACE
Zde je to, co dostanu v proměnných $object a $result:
Všimněte si, že $result je objekt, který obsahuje jak stav úspěšnosti, tak vrácenou hodnotu. Pokud by se vyskytly nějaké chyby, byly by také zahrnuty.