En 4D v16 R4, enriquecimos los comandos de objetos para que puedas validar objetos JSON. 4D v16 R5 va aún más allá al introducir el soporte de punteros JSON. Genial, pero ¿qué es un puntero JSON y qué puedo hacer con él?
Del mismo modo que no almacenas los detalles de la empresa para cada empleado en un registro de la base de datos (utilizando un enlace al registro de la empresa en su lugar), puede ser realmente útil estructurar un documento JSON con partes que pueden ser reutilizadas en varios lugares.
Por ejemplo, tomemos un ejemplo de un pedido en la web; el cliente introduce la dirección de envío y designa la dirección de facturación como la misma. En lugar de duplicar la información de la dirección, podemos definir la dirección de envío como una referencia a la dirección de facturación.
Otro escenario es definir un objeto plantilla que contenga propiedades por defecto almacenadas en formato JSON y fusionar algunas de las propiedades con información almacenada en un archivo JSON separado.
Los objetos que contienen ciclos(es decir, dos objetos que se contienen entre sí) no pueden ser encadenados en JSON. Los punteros JSON son una forma de expresar la referencia cíclica manteniendo la compatibilidad con el formato JSON.
CONCEPTO de puntero JSON
El puntero JSON es un estándar que define una sintaxis de cadena que puede ser utilizada para acceder a un campo particular o valor clave en el mismo u otro documento JSON. Se compone de cadenas separadas por el carácter «/». Estas cadenas especifican claves en objetos o índices en matrices. La sintaxis de los punteros JSON está definida por el RFC 6901.
Por ejemplo, este objeto
{ "foo": {"$ref": "#/bar"}, "bar": "42" }
Puede resolverse como
{ "foo": "42", "bar": "42" }
NUEVO COMANDO
El comando JSON resolve pointers analiza todos los punteros JSON encontrados en el objeto pasado como parámetro con respecto a algunas opciones de configuración (si las hay). A continuación, el comando devuelve un objeto con el estado de éxito, el valor del resultado y la posible lista de errores.
Unos cuantos ejemplos… ¡siempre es útil!
Echa un vistazo a nuestro ejemplo de base de datos para aprender (y entender) más sobre cómo funcionan los punteros JSON.
Además de la demo, aquí hay otro ejemplo – tomemos una variable $object que contiene lo siguiente:
Si ejecuto el código siguiente
$result:=JSON Resolve pointers($object)
TRACE
Esto es lo que obtengo en las variables $object y $result:
Observe que $result es un objeto, que contiene tanto el estado de éxito como el valor devuelto. Si hubiera habido algún error, también se habría incluido.