Casi todos los servicios o API utilizan el lenguaje JSON para enviar o recibir datos, aunque exede el alcance de esta guia explica el lenguaje JSON (recomendamos usar un motor de IA como chatGPT o gemini con un prompt acorde) para el uso de la interfaz WSAFIFPE.misdatos es necesario este formato para poder cargar y leer los datos del servicio.
Los diferentes servicios que implementan en el instalador para conectar a cada servicio suelen incluir los métodos cargarPropiedad y leerPropiedad para preparar los datos que debe ser enviados (para ejecutar un método) o bien para leer los datos devueltos por un método. Estos datos esta generamentente en formato JSON por lo que vamos a ver algunos casos simples.
en JSON entre los tipos de datos hay 2 fundamentales:
diccionario: representan una lista (entre {}" de datos etiquetados con un clave, por lo que cada datos es un par de clave:valor por ejemplo: {"nombre":"juan","apellido":"perez","edad":"10"}.
lista: representa una lista (entre []) de datos numerados desde el 0 como: ["manzana","naranja","mandarina"]
a partir de esos dos colecciones básicas de datos puede haber infinitas combinaciones como: una lista de diccionarios. [{"nombre":"juan","apellido":"lopez"},{"nombre":"juana","apellido":"lopez"}].
un diccionario dentro de otro diccionario: {"padre":{"nombre":"juan","apellido":"lopez"},"hijo":{"nombre":"juana","apellido":"lopez"}}
y todos el resto de combinaciones posibles.
en el caso del método leerPropiedad este tiene 5 argumentos:
metodo: es el nombre del método del que se quiere leer la respuesta (ejecutado previamente)
propiedad: es la ruta y nombre del campo a leer como se ve más abajo.
valor: sin uso (exceto que la propiedad a leer requiera algún datos extra como descargar un PDF o archivo en este caso este argumento contiene la ruta)
indice1: para listas o propiedades indexadas indica la fila
indice2: para listas dentro de listas indica el segun indice.
la ruta de un campo se debe ubicar en la respueta indicando si el datos está en un diccionario (en ese caso indicar su clave) o en una lista (en ese caso indicar si numero de posicion). por ejemlo:
si la respuesta contiene {"nombre":"juan","apellido":"perez","edad":"10"}. podriamos ejecutar objeto.leerPropiedad("metodo", "diccionario.nombre",0,0,0) y asi obtendriamos el valor "juan".
si la respuesta contiene {"padre":{"nombre":"juan","apellido":"lopez"},"hijo":{"nombre":"juana","apellido":"lopez"}} podriamos ejecutar objeto.leerPropiedad("metodo", "diccionario.hijo.diccionario.nombre",0,0,0) y asi obtendriamos el valor "juana".
is la respuesta contiene [{"nombre":"juan","apellido":"lopez"},{"nombre":"juana","apellido":"lopez"}] podriamos ejecutar objeto.leerPropiedad("metodo", "lista.itemcantidad",0,0,0) y asi obtendriamos el valor 2 (2 diccionarios en la lista) y si ejecutamos objeto.leerPropiedad("metodo", "lista.1.diccionario.nombre",0,0,0) y asi obtendriamos el valor "juana" (1 representa el segundo elmento o diccionario de la lista).