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étodo | Función |
|---|---|
of_add_string (string as_path, string as_value) → long | Añ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) → long | Añ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) → long | Añ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) → long | Añ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[]) → long | ESCRIBE 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) → long | Fusiona en la RAÍZ miembros ya formados en otro sitio, unidos por comas. Un fragmento vacío no escribe nada. Devuelve 0 |
of_clear ( ) → long | Vacía el documento para empezar otro objeto con la misma variable. Devuelve 0 |
of_text ( ) → string | El 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étodo | Función |
|---|---|
of_load (string as_json) → long | Carga 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 ( ) → boolean | Verdadero cuando el último of_load tuvo éxito |
of_exists (string as_path) → boolean | Verdadero cuando existe un valor en la ruta dada — distingue un valor presente pero vacío de uno ausente |
of_type (string as_path) → string | El tipo JSON en la ruta: object, array, string, number, boolean, null; vacío si ausente |
of_get_string (string as_path) → string | El 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) → double | El 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) → boolean | El booleano en la ruta: verdadero solo para el literal JSON true |
of_count (string as_path) → long | El 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) → string | El 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 ( ) → string | El 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.
| Miembro | Función |
|---|---|
of_set_string (string as_path, string as_value) → long → long | ESCRIBE 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 → long | ESCRIBE 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 → long | ESCRIBE 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 → long | ESCRIBE 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) → long | Quita 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_jsonsigue 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.