jsontree — u_pbt_jsontree #
← Referencia de componentes · Índice de la guía
jsontree muestra un valor JSON como un árbol plegable, coloreado por tipo: una pantalla de configuración, una respuesta de API, una depuración de integración. Fija el texto JSON en
is_json, el componente lo muestra; un clic en un nodo reporta su ruta (ue_node_clicked), un JSON inválido lanzaue_error. No modifica nada: es un VISOR.
▶ Verlo en vivo — Aplicación de demostración, mosaico JSON tree, con el código y esta página lado a lado.
De un vistazo #
| Userobject | u_pbt_jsontree |
| Entrada | El texto JSON, en is_json (una cadena) |
| Plegar / desplegar | Cada contenedor con su chevrón, o todo de una vez (of_expand_all, of_collapse_all) |
| Retorno | Un clic en un nodo da su ruta (ue_node_clicked); un JSON inválido lanza ue_error |
Inicio rápido #
// Show an API response as a tree
uo_json.is_json = inv_rest.of_response_text()
// Fold everything, then let the user open what interests them
uo_json.of_collapse_all()
// ue_node_clicked : the dotted path of the node clicked ("lines.0.sku")
// -> read it in your own data with what the path names
Propiedades #
| Propiedad | Tipo | Predeterminado | Descripción |
|---|---|---|---|
is_json | string | "" | El texto JSON a mostrar. Un objeto, un array, un valor; leído y mostrado como árbol. Vacío borra el árbol; un JSON inválido lanza ue_error y no muestra nada |
ib_wrap | boolean | true | Las líneas largas se ajustan (true, por defecto) o se quedan en una línea con barra horizontal (false) — un aspecto de editor de código |
ib_search_enabled | boolean | true | Ctrl+F en el árbol abre un cuadro de búsqueda — la misma búsqueda que of_search: escribir resalta, Intro siguiente, Mayús+Intro anterior, Esc cierra. false deja el atajo a una aplicación que busca desde su propio cuadro |
is_theme_style | string | fluent | Estilo visual del componente (constantes THEME_STYLE_*) |
is_theme_mode | string | light | Variante clara u oscura (constantes THEME_MODE_*) |
il_theme_accent | long | -1 | Color de acento de este componente (-1 = acento del tema) |
is_tooltip | string | "" | Tooltip simple mostrado al pasar el ratón por el componente |
is_super_tooltip_title | string | "" | Título del tooltip enriquecido (prevalece sobre is_tooltip) |
is_super_tooltip_text | string | "" | Texto del tooltip enriquecido (se acepta el marcado enriquecido) |
is_super_tooltip_image | string | "" | Imagen del tooltip enriquecido |
Métodos #
| Método | Descripción |
|---|---|
of_expand_all ( ) → long | Despliega cada contenedor. Devuelve 0, -1 si el componente no está creado |
of_collapse_all ( ) → long | Pliega cada contenedor anidado (el nivel superior queda visible). Devuelve 0, -1 si el componente no está creado |
of_clear ( ) → long | Vacía el árbol (como is_json = ""). Devuelve 0, -1 si el componente no está creado |
of_expand_to_level ( long al_level ) → long | Muestra el árbol hasta al_level: los bloques a esa profundidad o más se pliegan (1 = los hijos directos del bloque raíz, 0 pliega la raíz) |
of_search ( string as_query ) → long | Resalta cada aparición (sin distinguir mayúsculas) y salta a la primera, abriendo todo ancestro plegado; ue_search_result dice cuántas. Una consulta vacía borra la búsqueda. El cuadro de búsqueda se abre con la consulta dentro y el foco en él (el mismo que Ctrl+F): Intro pasa a la siguiente; con ib_search_enabled en false el árbol solo resalta |
of_search_next ( ) → long | Pasa a la SIGUIENTE coincidencia (vuelve a la primera tras la última); ue_search_result informa la nueva posición |
of_search_prev ( ) → long | Pasa a la coincidencia ANTERIOR (vuelve a la última antes de la primera); ue_search_result informa la nueva posición |
of_clear_search ( ) → long | Descarta la búsqueda: sin resaltados ni coincidencia actual (of_match_count devuelve 0); el cuadro de búsqueda se vacía y se cierra |
of_select_path ( string as_path ) → long | Selecciona y desplaza hasta la línea en as_path SIN lanzar un evento (la app lo dirigió) |
of_selected_path ( ) → string | La ruta de acceso de la línea seleccionada, leída EN VIVO (b.c, d[0]) — lo que copia un botón Copiar. Vacío si nada está seleccionado |
of_selected_value ( ) → string | El valor JSON de la línea seleccionada cuando es una HOJA (una cadena conserva sus comillas, lista para pegar), leído EN VIVO. Vacío para un contenedor o sin selección |
of_match_count ( ) → long | Devuelve cuántas coincidencias encontró la búsqueda actual, leído EN VIVO — el 12 de una barra de estado 3 / 12. 0 sin búsqueda |
of_match_index ( ) → long | Devuelve la posición (1-based) de la coincidencia actual, leída EN VIVO — el 3 de una barra de estado 3 / 12. 0 sin coincidencia |
Eventos #
| Evento | Cuándo |
|---|---|
ue_node_clicked (string as_path) | El usuario hizo clic en un nodo: su ruta de acceso con puntos (lines.0.sku), a releer en sus datos |
ue_selection_changed (string as_path) | La línea seleccionada cambió por TECLADO (flechas, Inicio/Fin) — un clic de ratón reporta ue_node_clicked |
ue_search_result (long al_count, long al_index) | Una búsqueda se ejecutó o avanzó: al_count coincidencias en total, la actual es al_index (1-based, 0 si ninguna) — para un « 3 / 12 » |
ue_error (string as_message) | El texto en is_json no es un JSON válido: el mensaje dice por qué, el árbol queda vacío |
Ejemplo #
Explorar la respuesta de una API #
if inv_rest.of_get("https://api.example.com/orders/4152") = 200 then
uo_json.is_json = inv_rest.of_response_text()
uo_json.of_collapse_all() // the reader opens what interests them
else
uo_json.of_clear()
end if
Buenas prácticas #
- Es un visor, no un editor: muestra el JSON, no lo cambia. Para leer un valor, tome la ruta de
ue_node_clickedy búsquela en sus propios datos. - Un JSON grande se pliega: primero
of_collapse_all, el lector abre lo que le interesa — mil nodos abiertos de golpe es ilegible. - Un JSON inválido no rompe nada:
ue_errorlo dice, el árbol queda vacío. Es el retorno a mostrar, no un fallo.
Heredado de la base común #
Estos miembros existen en todos los componentes visuales — no son propios de este. Se detallan una sola vez, en los capítulos transversales; esta tabla solo dice dónde leerlos.
| Miembros | Función | Detallado en |
|---|---|---|
of_reset | Poner el componente a cero | 3.6 Poner un componente a cero: of_reset() |
of_register_shortcut · of_clear_shortcuts | Atajos de teclado del componente | 3.5 Los atajos de teclado |
of_is_created · of_is_ready · of_get_last_error | Si ha nacido, si está listo, qué ha fallado | 3.7 Diagnóstico |
of_save_as_png · of_save_as_jpg | Exportar el render como imagen | 3.8 Exportar la representación como imagen |
of_set_redraw | Agrupar los cambios en un solo repintado | 3.10 Buenas prácticas |
of_preload_icons | Iconos mostrados sin retardo | Visualización instantánea: of_icon |
of_set_translation | Traducir una etiqueta del componente | 5.2 Adaptar una etiqueta: of_set_translation |
of_focus_webview | Dar el foco al componente | 6.4 Teclado y foco |
of_print · of_print_to_pdf | Imprimir, o escribir un PDF | 6.9 Imprimir |
of_set_property · of_get_property · of_component_name | Controlar una propiedad por su nombre | 3.1 El motor de propiedades |