Artículo
· 11 jul, 2023 Lectura de 3 min

Utilizando JSON en IRIS

¡Hola Comunidad!

El otro día vi un artículo sobre el uso del paquete %ZEN cuando se trabaja con JSON y he decidido escribir un artículo para describir un enfoque más actualizado. Hace no mucho se dio el paso de usar %ZEN.Auxiliary.* a clases JSON dedicadas. Esto permite trabajar con JSONs de forma más orgánica.

Llegados a este punto hay básicamente 3 clases principales para trabajar con JSON:

  • %Library.DynamicObject - proporciona una manera simple y eficiente de encapsular y trabajar con documentos JSON estándar. También nos da la posibilidad de, en vez de escribir el código habitual para crear la instancia de una clase como
set obj = ##class(%Library.DynamicObject).%New()

usar la siguiente sintaxis

set obj = {}
  • %Library.DynamicArray - proporciona una manera simple y eficiente de encapsular y trabajar con matrices JSON estándar. Con los arrays se puede usar el mismo enfoque que con los objetos, lo que significa que o bien se puede crear una  instancia de la clase
set array = ##class(%DynamicArray).%New()

o se puede hacer usando corchetes []

set array = []
  • %JSON.Adaptor es una utilidad para mapear objetos de ObjectScript (registrados, serial o persistentes) a textos JSON o entidades dinámicas.
Vamos a verlos un poco más en detalle.

Supongamos que estoy trabajando con un cliente RESTful y necesito enviar alguna información generada sobre la marcha que no es un objeto de base de datos. Podemos crear una nueva instancia de %DynamicObject y establecer sus propiedades. En cierto modo es similar a lo que se hacía antes con %ZEN.ProxyObject. Y por supuesto, puedo tener objetos integrados y arrays integrados como propiedades (o campos JSON):

Set result={}
set result.Group = "TB-41"
set result.Name = "Iryna Mykhailova"
set result.Questions = ["What is JSON?", "Create instance of class Test and set all it's properties."]

Como resultado de estas líneas de código, obtendremos el siguiente String en formato JSON:

{"Group":"TB-41","Name":"Iryna Mykhailova","Questions":["What is JSON?","Create instance of class Test and set all it's properties."]}

Aparte de simplemente establecer las propiedades o escribir el String en formato JSON dentro de los corchetes

Set result={"Group":"TB-41", "Name":"Iryna Mykhailova", "Questions":["What is JSON?", "Create instance of class Test and set all it's properties."]}
 

existe la posibilidad de usar métodos para configurar ( %Set() ), obtener ( %Get() ) y eliminar ( %Remove() ) los valores de las propiedades. Lo mismo ocurre para los arrays.

Y la última clase básica %JSON.Adaptor se utiliza como una superclase para habilitar las capacidades JSON a las clases existentes. Por lo tanto, si hay una clase de datos que se utiliza en un servicio RESTful, es fácil obtener una representación JSON utilizando el método %ToJSON()  y la acción opuesta - %FromJSON(). También existe la posibilidad de serializar y deserializar clases habilitadas para JSON a Strings y Streams si fuera necesario.

Con esto termino este breve tutorial sobre las clases JSON y su uso. Espero que os ayude a entender la mejor manera de hacer las cosas.

Comentarios (1)1
Inicie sesión o regístrese para continuar