Trabajar con punteros JSON

Traducido automáticamente de Deepl

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.

Ejemplo de base de datos

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:

blank

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.

Vanessa Talbot
• Propietario de producto - Vanessa Talbot llegó al equipo de 4D Program en junio de 2014. Como Propietario de producto, está a cargo de escribir las historias de los usuarios y luego traducirlas a especificaciones funcionales. Su papel es también asegurarse de que la implementación de la funcionalidad entregada cumpla con las necesidades del cliente. Desde su llegada, ha trabajado en la definición de funcionalidades claves en 4D. Ha trabajado en la mayoría de las nuevas funcionalidades de multi hilo apropiativo y también en un tema muy complejo: la nueva arquitectura para la aplicación engined. Vanessa es licenciada por Telecom Saint-Etienne. Comenzó su carrera en el Instituto de Investigación Criminal como desarrolladora del departamento audiovisual. También ha trabajado en medios de comunicación y en el ámbito médico como experta en soporte técnico, producción y documentación de nuevas funcionalidades.