Lavorare con i puntatori JSON

Tradotto automaticamente da Deepl

In 4D v16 R4 abbiamo arricchito i comandi per gli oggetti, in modo da poter li convalidare. 4D v16 R5 si spinge oltre, introducendo il supporto dei puntatori JSON. Bene, ma cos’è un puntatore JSON e cosa posso fare con esso?

Proprio come non si memorizzano i dettagli dell’azienda per ogni dipendente in un record del database (utilizzando invece un link al record dell’azienda), può essere molto utile strutturare un documento JSON con parti che possono essere riutilizzate in diversi luoghi.

Per esempio, prendiamo un esempio di ordine da un sito web; il cliente inserisce l’indirizzo di spedizione e designa l’indirizzo di fatturazione come lo stesso. Invece di duplicare le informazioni sull’indirizzo, possiamo definire l’indirizzo di spedizione come un riferimento all’indirizzo di fatturazione.

Un altro scenario è quello di definire un oggetto modello contenente proprietà predefinite memorizzate in formato JSON e fondere alcune delle proprietà con informazioni memorizzate in un file JSON separato.

Gli oggetti che contengono cicli(cioè due oggetti che si contengono a vicenda) non possono essere stringati in JSON. I puntatori JSON sono un modo per esprimere il riferimento ciclico mantenendo la compatibilità con il formato JSON.

Concetto di puntatore JSON

Il puntatore JSON è uno standard che definisce una sintassi di stringhe che può essere utilizzata per accedere a un particolare campo o valore chiave nello stesso documento JSON o in un altro. È composto da stringhe separate dal carattere “/”. Queste stringhe specificano chiavi di oggetti o indici di array. La sintassi dei puntatori JSON è definita dalla RFC 6901.

Ad esempio, questo oggetto:

{
    "foo": {"$ref": "#/bar"},
    "bar": "42"
}

Può essere risolto come:

{
   "foo": "42",
   "bar": "42"
}

NUOVO COMANDO

Il comando JSON resolve pointers analizza tutti i puntatori JSON presenti nell’oggetto passato come parametro, in relazione ad alcune impostazioni di opzioni (se presenti). Il comando restituisce quindi un oggetto con lo stato di successo, il valore del risultato e l’eventuale elenco degli errori.

ALCUNI ESEMPI… è sempre utile!

Date un’occhiata alla demo del nostro database di esempio per imparare (e capire) meglio come funzionano i puntatori JSON!

Esempio di database

Oltre alla demo, ecco un altro esempio: prendiamo una variabile $object che contiene quanto segue:

Se eseguo il codice qui sotto:

$result:=JSON Resolve pointers($object)
TRACCIA

Ecco cosa ottengo nelle variabili $object e $result:

blank

Si noti che $result è un oggetto, contenente sia lo stato di successo che il valore restituito. Se ci fossero stati degli errori, sarebbero stati inclusi anche quelli.

Vanessa Talbot
- Product Owner - Vanessa Talbot è entrata a far parte del team di 4D Program nel giugno 2014. In qualità di Product Owner, è incaricata di scrivere le storie degli utenti e di tradurle in specifiche funzionali. Il suo ruolo è anche quello di assicurarsi che l'implementazione della funzionalità fornita soddisfi le esigenze del cliente. Ha lavorato sulla maggior parte delle nuove funzionalità di multi-threading preemptive e anche su un argomento molto complesso: la nuova architettura per le applicazioni con motore. Vanessa si è laureata presso Telecom Saint-Etienne. Ha iniziato la sua carriera presso il Criminal Research Institute come sviluppatrice per il dipartimento audiovisivo. Ha lavorato anche nei settori dei media e della medicina come esperta di supporto tecnico, produzione e documentazione di nuove funzionalità.