PBToolboxAI v3 ← Site

json — n_pbt_json #

← Referencia de componentes · Índice de la guía

Construir un JSON tipo por tipo — texto, número, booleano, arreglo, objeto anidado — con el escapado hecho por usted, y luego leer uno a lo largo de una ruta: of_load, of_get_string, of_type, of_count. Un solo objeto construye sus peticiones y lee sus respuestas. Todo en PowerScript puro: sin página, sin motor, PowerBuilder 10 incluido.

▶ Verlo en vivo — Aplicación de demostración, mosaico JSON: los resultados, el código que los produce y esta página, lado a lado.


En resumen #

n_pbt_json es autoinstantiate: se declara como variable local, sin create ni destroy. Es el mismo objeto que, internamente, construye las cargas útiles enviadas al motor — ahora ofrecido a su código, del lado de construcción y de lectura.

Inicio rápido #

Construir una carga útil y luego releer una respuesta — todo cabe en una variable local:

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

Una ruta son las claves desde la raíz unidas por /; el índice de un arreglo es su posición, contada desde 0: order/lines/0.


Construir una carga útil #

MétodoFunción
of_add_string (string as_path, string as_value) → longAñade una CADENA, con escape automático, al ARRAY en as_path. El array debe existir: ábralo antes con of_set_raw y un array vacío. Devuelve 0, -4 si as_path falta o no es un array
of_add_boolean (string as_path, boolean ab_value) → longAñade un BOOLEANO (true o false, nunca entre comillas) al ARRAY en as_path. El array debe existir: ábralo antes con of_set_raw y un array vacío. Devuelve 0, -4 si as_path falta o no es un array
of_add_number (string as_path, long al_value) → longAñade un NÚMERO (tres sobrecargas: integer, long, double) al ARRAY en as_path. El array debe existir: ábralo antes con of_set_raw y un array vacío. Devuelve 0, -4 si as_path falta o no es un array
of_add_raw (string as_path, string as_json) → longAñade un valor YA en JSON (un objeto, un array) del que usted responde al ARRAY en as_path. El array debe existir: ábralo antes con of_set_raw y un array vacío. Devuelve 0, -4 si as_path falta o no es un array
of_set_array (string as_path, string as_values[]) → longESCRIBE un ARRAY entero de cadenas en as_path desde un array PowerBuilder, cada elemento con escape. Un array vacío escribe uno vacío. Misma regla de ruta y mismos códigos que of_set_string
of_set_members (string as_fragment) → longFusiona en la RAÍZ miembros ya formados en otro sitio, unidos por comas. Un fragmento vacío no escribe nada. Devuelve 0
of_clear ( ) → longVacía el documento para empezar otro objeto con la misma variable. Devuelve 0
of_text ( ) → stringEl documento tal cual (compacto): lo que construyó (of_add_string, of_add_number...) o cargó (of_load), tras cualquier cambio — la salida única, lista para enviar, almacenar o reescribir. of_pretty da la forma indentada. {} si está vacío; llamarlo no vacía nada

Leer un documento #

MétodoFunción
of_load (string as_json) → longCarga un texto JSON para su lectura. Devuelve 0 si está bien formado, -5 si el argumento está vacío, -4 si no es JSON válido (el documento se descarta entonces). Analiza en PowerScript puro
of_is_valid ( ) → booleanVerdadero cuando el último of_load tuvo éxito
of_exists (string as_path) → booleanVerdadero cuando existe un valor en la ruta dada — distingue un valor presente pero vacío de uno ausente
of_type (string as_path) → stringEl tipo JSON en la ruta: object, array, string, number, boolean, null; vacío si ausente
of_get_string (string as_path) → stringEl valor en la ruta, como texto: una cadena vuelve decodificada, un número/booleano/null como texto, un objeto o arreglo como JSON en bruto (recargable con of_load)
of_get_number (string as_path) → doubleEl número en la ruta, como double — el punto decimal se respeta en cualquier máquina (2.5 es 2,5, no 2). 0 si ausente
of_get_boolean (string as_path) → booleanEl booleano en la ruta: verdadero solo para el literal JSON true
of_count (string as_path) → longEl número de miembros del objeto, o de elementos del arreglo, en la ruta. Devuelve -1 si el valor es escalar o ausente (distingue un arreglo vacío, 0, de uno faltante, -1)
of_name (string as_path, long al_index) → stringEl nombre del miembro n.º al_index (desde 1) del objeto en la ruta — para leer las claves de un objeto de forma desconocida. Con of_count, recorre el objeto
of_pretty ( ) → stringEl documento cargado, re-indentado para su lectura (varias líneas, tabulaciones) — un log, un cuadro de texto. Vacío si no hay nada válido cargado

Modificar un documento #

El lado de escritura cambia el documento cargado en el sitio, luego of_text devuelve el resultado (compacto) — lo que se reescribe. Los setters reemplazan el valor en la ruta, o agregan la última clave cuando falta en un objeto padre. Cada uno devuelve 0, -4 cuando el padre falta o es del tipo equivocado, -5 con una ruta vacía.

MiembroFunción
of_set_string (string as_path, string as_value) → long → longESCRIBE una cadena en as_path, con escape automático. La ruta puede tener VARIOS niveles (a/b/c): los que faltan se crean como OBJETOS, y un documento VACÍO pasa a serlo — escribir ES construir. Un valor ya presente se reemplaza, esté donde esté. Devuelve 0, -4 si un nivel del camino es un escalar o un array, -5 con una ruta vacía
of_set_number (string as_path, long al_value) → long → longESCRIBE un NÚMERO en as_path, el punto decimal forzado. Tres sobrecargas: integer, long, double. Misma regla de ruta y mismos códigos que of_set_string
of_set_boolean (string as_path, boolean ab_value) → long → longESCRIBE un BOOLEANO en as_path: true o false, nunca entre comillas. Misma regla de ruta y mismos códigos que of_set_string
of_set_raw (string as_path, string as_json) → long → longESCRIBE en as_path un valor YA en JSON — un objeto anidado, un array, null — tal cual: usted responde por él. Así se ABRE también un array antes de of_add_*. Misma regla de ruta y mismos códigos que of_set_string
of_remove (string as_path) → longQuita el valor en la ruta — un miembro de objeto (su clave y una coma se van con él) o un elemento de arreglo; el resultado sigue siendo válido
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}

Alcance. El JSON se analiza en PowerScript puro, sin página ni motor: n_pbt_json sigue siendo autoinstantiate y funciona en todas partes, PowerBuilder 10 incluido. Para XML, vea xml (que se apoya en el motor); para mostrar un JSON como árbol plegable, vea jsontree.

← Referencia de componentes · Índice de la guía