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.Adaptores 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.
Comments
Este artículo ha sido etiquetado como "Mejores prácticas" ("Best practices").
Los artículos con la etiqueta "Mejores prácticas" incluyen recomendaciones sobre cómo desarrollar, probar, implementar y administrar mejor las soluciones de InterSystems.