json — n_pbt_json #
← Riferimento dei componenti · Sommario della guida
Costruire un JSON tipo per tipo — stringa, numero, booleano, array, oggetto annidato — con l'escaping fatto per te, poi rileggerne uno lungo un percorso:
of_load,of_get_string,of_type,of_count. Un solo oggetto costruisce le tue richieste e legge le tue risposte. Tutto in PowerScript puro: nessuna pagina, nessun motore, PowerBuilder 10 incluso.
▶ Vederlo dal vivo — Applicazione dimostrativa, riquadro JSON: i risultati, il codice che li produce e questa pagina, fianco a fianco.
In breve #
n_pbt_json è autoinstantiate: lo si dichiara come variabile locale, senza create né destroy. È lo stesso oggetto che, internamente, costruisce i payload inviati al motore — ora offerto al tuo codice, sul lato costruzione e lettura.
Avvio rapido #
Costruire un payload, poi rileggere una risposta — tutto in una variabile locale:
n_pbt_json lnv_json
string ls_customer
double ld_total
// Write : each member is typed and escaped for you - a path may have levels
lnv_json.of_set_string("customer", "Ada")
lnv_json.of_set_number("total", 690.50)
lnv_json.of_set_boolean("paid", true)
// lnv_json.of_text() -> {"customer":"Ada","total":690.5,"paid":true}
// Read : load a response, reach values by path
lnv_json.of_load('{"order":{"customer":"Ada","total":690.50}}')
IF lnv_json.of_is_valid() THEN
ls_customer = lnv_json.of_get_string("order/customer") // Ada
ld_total = lnv_json.of_get_number("order/total") // 690.5
END IF
Un percorso sono le chiavi dalla radice unite da /; l'indice di un array è la sua posizione, contata da 0: order/lines/0.
Costruire un payload #
| Metodo | Ruolo |
|---|---|
of_add_string (string as_path, string as_value) → long | Aggiunge una STRINGA, con escape automatico, all'ARRAY in as_path. L'array deve già esistere: apritelo prima con of_set_raw e un array vuoto. Restituisce 0, -4 se as_path manca o non è un array |
of_add_boolean (string as_path, boolean ab_value) → long | Aggiunge un BOOLEANO (true o false, mai tra virgolette) all'ARRAY in as_path. L'array deve già esistere: apritelo prima con of_set_raw e un array vuoto. Restituisce 0, -4 se as_path manca o non è un array |
of_add_number (string as_path, long al_value) → long | Aggiunge un NUMERO (tre overload: integer, long, double) all'ARRAY in as_path. L'array deve già esistere: apritelo prima con of_set_raw e un array vuoto. Restituisce 0, -4 se as_path manca o non è un array |
of_add_raw (string as_path, string as_json) → long | Aggiunge un valore GIÀ in JSON (un oggetto, un array) di cui rispondete all'ARRAY in as_path. L'array deve già esistere: apritelo prima con of_set_raw e un array vuoto. Restituisce 0, -4 se as_path manca o non è un array |
of_set_array (string as_path, string as_values[]) → long | SCRIVE un intero ARRAY di stringhe in as_path da un array PowerBuilder, ogni elemento con escape. Un array vuoto ne scrive uno vuoto. Stessa regola di percorso e stessi codici di of_set_string |
of_set_members (string as_fragment) → long | Unisce alla RADICE membri già formati altrove, uniti da virgole. Un frammento vuoto non scrive nulla. Restituisce 0 |
of_clear ( ) → long | Svuota il documento per iniziare un altro oggetto con la stessa variabile. Restituisce 0 |
of_text ( ) → string | Il documento così com'è (compatto): ciò che hai costruito (of_add_string, of_add_number...) o caricato (of_load), dopo ogni modifica — l'unica uscita, pronta da inviare, memorizzare o riscrivere. of_pretty ne dà la forma indentata. {} se vuoto; chiamarlo non svuota nulla |
Leggere un documento #
| Metodo | Ruolo |
|---|---|
of_load (string as_json) → long | Carica un testo JSON per la lettura. Restituisce 0 se ben formato, -5 se l'argomento è vuoto, -4 se non è JSON valido (il documento viene allora scartato). Analizza in PowerScript puro |
of_is_valid ( ) → boolean | Vero quando l'ultimo of_load è riuscito |
of_exists (string as_path) → boolean | Vero quando un valore esiste al percorso dato — distingue un valore presente ma vuoto da uno assente |
of_type (string as_path) → string | Il tipo JSON al percorso: object, array, string, number, boolean, null; vuoto se assente |
of_get_string (string as_path) → string | Il valore al percorso, come testo: una stringa torna decodificata, un numero/booleano/null come testo, un oggetto o array come JSON grezzo (ricaricabile con of_load) |
of_get_number (string as_path) → double | Il numero al percorso, come double — il punto decimale è rispettato su ogni macchina (2.5 è 2,5, non 2). 0 se assente |
of_get_boolean (string as_path) → boolean | Il booleano al percorso: vero solo per il letterale JSON true |
of_count (string as_path) → long | Il numero di membri dell'oggetto, o di elementi dell'array, al percorso. Restituisce -1 se il valore è scalare o assente (distingue un array vuoto, 0, da uno mancante, -1) |
of_name (string as_path, long al_index) → string | Il nome del membro n° al_index (da 1) dell'oggetto al percorso — per leggere le chiavi di un oggetto di forma ignota. Con of_count, percorre l'oggetto |
of_pretty ( ) → string | Il documento caricato, re-indentato per la lettura (più righe, tabulazioni) — un log, una casella di testo. Vuoto se nulla di valido è caricato |
Modificare un documento #
Il lato scrittura cambia il documento caricato sul posto, poi of_text ne rende il risultato (compatto) — ciò che si riscrive. I setter sostituiscono il valore al percorso, o aggiungono l'ultima chiave quando manca a un oggetto padre. Ognuno rende 0, -4 quando il padre manca o è del tipo sbagliato, -5 su un percorso vuoto.
| Membro | Ruolo |
|---|---|
of_set_string (string as_path, string as_value) → long → long | SCRIVE una stringa in as_path, con escape automatico. Il percorso può avere PIÙ livelli (a/b/c): quelli mancanti sono creati come OGGETTI, e un documento VUOTO ne diventa uno — scrivere È costruire. Un valore già presente viene sostituito, ovunque si trovi. Restituisce 0, -4 se un livello del percorso è uno scalare o un array, -5 su un percorso vuoto |
of_set_number (string as_path, long al_value) → long → long | SCRIVE un NUMERO in as_path, il punto decimale forzato. Tre overload: integer, long, double. Stessa regola di percorso e stessi codici di of_set_string |
of_set_boolean (string as_path, boolean ab_value) → long → long | SCRIVE un BOOLEANO in as_path: true o false, mai tra virgolette. Stessa regola di percorso e stessi codici di of_set_string |
of_set_raw (string as_path, string as_json) → long → long | SCRIVE in as_path un valore GIÀ in JSON — un oggetto annidato, un array, null — così com'è: ne rispondete voi. È anche così che si APRE un array prima di of_add_*. Stessa regola di percorso e stessi codici di of_set_string |
of_remove (string as_path) → long | Rimuove il valore al percorso — un membro di oggetto (la sua chiave e una virgola vanno con esso) o un elemento di array; il risultato resta valido |
n_pbt_json lnv_json
// Load, edit in place, then read back the ONE document with of_text
lnv_json.of_load('{"name":"Ada","active":false}')
lnv_json.of_set_string("name", "Grace") // replace
lnv_json.of_set_boolean("active", true)
lnv_json.of_set_number("count", 3) // added : the key was absent
// lnv_json.of_text() -> {"name":"Grace","active":true,"count":3}
Ambito. Il JSON si analizza in PowerScript puro, senza pagina né motore:
n_pbt_jsonresta autoinstantiate e funziona ovunque, PowerBuilder 10 incluso. Per l'XML, vedi xml (che si appoggia al motore); per mostrare un JSON come albero comprimibile, vedi jsontree.