PBToolboxAI v3 ← Site

json — n_pbt_json #

← Komponentenreferenz · Inhalt des Handbuchs

JSON Typ für Typ bauen — String, Zahl, Boolean, Array, verschachteltes Objekt — mit dem Escaping für Sie erledigt, dann eines zurücklesen entlang eines Pfades: of_load, of_get_string, of_type, of_count. Ein einziges Objekt baut Ihre Anfragen und liest Ihre Antworten. Alles in reinem PowerScript: keine Seite, keine Engine, PowerBuilder 10 inbegriffen.

▶ Live ansehen — Demoanwendung, Kachel JSON: die Ergebnisse, der zugehörige Code und diese Seite nebeneinander.


Kurzüberblick #

n_pbt_json ist autoinstantiate: als lokale Variable deklarieren, ohne create oder destroy. Es ist genau das Objekt, das intern die an die Engine gesendeten Nutzdaten baut — jetzt Ihrem Code angeboten, auf der Bau- und der Leseseite.

Schnellstart #

Nutzdaten bauen, dann eine Antwort zurücklesen — alles passt in eine lokale Variable:

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

Ein Pfad sind die Schlüssel ab der Wurzel, verbunden mit /; ein Array-Index ist seine Position, ab 0 gezählt: order/lines/0.


Nutzdaten bauen #

MethodeRolle
of_add_string (string as_path, string as_value) → longHängt eine ZEICHENKETTE, für Sie maskiert, an das ARRAY unter as_path an. Das Array muss vorhanden sein: öffnen Sie es zuerst mit of_set_raw und einem leeren Array. Liefert 0, -4, wenn as_path fehlt oder kein Array ist
of_add_boolean (string as_path, boolean ab_value) → longHängt einen BOOLESCHEN Wert (true oder false, nie in Anführungszeichen) an das ARRAY unter as_path an. Das Array muss vorhanden sein: öffnen Sie es zuerst mit of_set_raw und einem leeren Array. Liefert 0, -4, wenn as_path fehlt oder kein Array ist
of_add_number (string as_path, long al_value) → longHängt eine ZAHL (drei Überladungen: integer, long, double) an das ARRAY unter as_path an. Das Array muss vorhanden sein: öffnen Sie es zuerst mit of_set_raw und einem leeren Array. Liefert 0, -4, wenn as_path fehlt oder kein Array ist
of_add_raw (string as_path, string as_json) → longHängt einen Wert, der BEREITS JSON ist (ein Objekt, ein Array) und für den Sie einstehen an das ARRAY unter as_path an. Das Array muss vorhanden sein: öffnen Sie es zuerst mit of_set_raw und einem leeren Array. Liefert 0, -4, wenn as_path fehlt oder kein Array ist
of_set_array (string as_path, string as_values[]) → longSCHREIBT ein ganzes ARRAY von Zeichenketten unter as_path aus einem PowerBuilder-Array, jedes Element maskiert. Ein leeres Array schreibt ein leeres. Gleiche Pfadregel und gleiche Codes wie of_set_string
of_set_members (string as_fragment) → longFührt bereits anderswo gebildete Mitglieder an der WURZEL zusammen, durch Kommas verbunden. Ein leeres Fragment schreibt nichts. Liefert 0
of_clear ( ) → longLeert das Dokument, um mit derselben Variablen ein anderes Objekt zu beginnen. Liefert 0
of_text ( ) → stringDas Dokument wie es ist (kompakt): das, was Sie gebaut (of_add_string, of_add_number...) oder geladen (of_load) haben, nach jeder Änderung — die einzige Ausgabe, bereit zum Senden, Speichern oder Zurückschreiben. of_pretty ist die eingerückte Form. {} wenn leer; der Aufruf leert nichts

Ein Dokument lesen #

MethodeRolle
of_load (string as_json) → longLädt einen JSON-Text zum Lesen. Liefert 0, wenn wohlgeformt, -5, wenn das Argument leer ist, -4, wenn es kein gültiges JSON ist (das Dokument wird dann verworfen). Parst in reinem PowerScript
of_is_valid ( ) → booleanWahr, wenn das letzte of_load erfolgreich war
of_exists (string as_path) → booleanWahr, wenn am angegebenen Pfad ein Wert liegt — unterscheidet einen vorhandenen, aber leeren Wert von einem fehlenden
of_type (string as_path) → stringDer JSON-Typ am Pfad: object, array, string, number, boolean, null; leer, wenn abwesend
of_get_string (string as_path) → stringDer Wert am Pfad, als Text: ein String kommt dekodiert zurück, eine Zahl/Boolean/null als Text, ein Objekt oder Array als rohes JSON (mit of_load neu ladbar)
of_get_number (string as_path) → doubleDie Zahl am Pfad, als double — der Dezimalpunkt wird auf jeder Maschine beachtet (2.5 ist 2,5, nicht 2). 0, wenn abwesend
of_get_boolean (string as_path) → booleanDer Boolean am Pfad: wahr nur für das JSON-Literal true
of_count (string as_path) → longDie Anzahl der Mitglieder des Objekts oder Elemente des Arrays am Pfad. Liefert -1, wenn der Wert skalar oder abwesend ist (unterscheidet ein leeres Array, 0, von einem fehlenden, -1)
of_name (string as_path, long al_index) → stringDer Name des al_index-ten Mitglieds (ab 1) des Objekts am Pfad — um die Schlüssel eines Objekts unbekannter Form zu lesen. Mit of_count durchläuft es das Objekt
of_pretty ( ) → stringDas geladene Dokument, zum Lesen neu eingerückt (mehrere Zeilen, Tabs) — ein Log, ein Textfeld. Leer, wenn nichts Gültiges geladen ist

Ein Dokument ändern #

Die Schreib-Seite ändert das geladene Dokument an Ort und Stelle, dann liefert of_text das Ergebnis (kompakt) — das, was zurückgeschrieben wird. Die Setter ersetzen den Wert am Pfad oder fügen den letzten Schlüssel hinzu, wenn er einem Elternobjekt fehlt. Jeder liefert 0, -4 wenn der Elternteil fehlt oder vom falschen Typ ist, -5 bei leerem Pfad.

ElementRolle
of_set_string (string as_path, string as_value) → long → longSCHREIBT eine Zeichenkette unter as_path, für Sie maskiert. Der Pfad darf MEHRERE Ebenen haben (a/b/c): fehlende werden als OBJEKTE angelegt, und ein LEERES Dokument wird zu einem — Schreiben IST Bauen. Ein bereits vorhandener Wert wird ersetzt, wo immer er steht. Liefert 0, -4, wenn eine Ebene unterwegs ein Skalar oder ein Array ist, -5 bei leerem Pfad
of_set_number (string as_path, long al_value) → long → longSCHREIBT eine ZAHL unter as_path, der Dezimalpunkt erzwungen. Drei Überladungen: integer, long, double. Gleiche Pfadregel und gleiche Codes wie of_set_string
of_set_boolean (string as_path, boolean ab_value) → long → longSCHREIBT einen BOOLESCHEN Wert unter as_path: true oder false, nie in Anführungszeichen. Gleiche Pfadregel und gleiche Codes wie of_set_string
of_set_raw (string as_path, string as_json) → long → longSCHREIBT unter as_path einen Wert, der BEREITS JSON ist — ein verschachteltes Objekt, ein Array, null — so wie er ist: Sie stehen dafür ein. So wird auch ein Array vor of_add_* GEÖFFNET. Gleiche Pfadregel und gleiche Codes wie of_set_string
of_remove (string as_path) → longEntfernt den Wert am Pfad — ein Objektmitglied (sein Schlüssel und ein Komma gehen mit) oder ein Array-Element; das Ergebnis bleibt gültig
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}

Umfang. JSON parst in reinem PowerScript, ohne Seite oder Engine: n_pbt_json bleibt autoinstantiate und funktioniert überall, PowerBuilder 10 inbegriffen. Für XML siehe xml (das auf die Engine baut); um ein JSON als aufklappbaren Baum zu zeigen, siehe jsontree.

← Komponentenreferenz · Inhalt des Handbuchs