Artigo
· Ago. 21, 2023 3min de leitura

Usando JSON no IRIS

Outro dia, vi um artigo sobre o uso do pacote %ZEN ao trabalhar com JSON e decidi escrever um artigo descrevendo uma abordagem mais moderna. Recentemente, houve uma grande mudança no uso de %ZEN.Auxiliary.* para as classes JSON dedicadas. Isso permitiu o trabalho mais orgânico com JSONs.

Portanto, há basicamente 3 classes principais para trabalhar com o JSON:

  • %Library.DynamicObject - oferece uma maneira simples e eficiente de encapsular e trabalhar com documentos JSON padrão. Além disso, há outra possibilidade além de escrever o código habitual para criar a instância de uma classe desta maneira
set obj = ##class(%Library.DynamicObject).%New()

É possível usar a seguinte sintaxe

set obj = {}
  • %Library.DynamicArray - oferece uma maneira simples e eficiente de encapsular e trabalhar com arrays JSON padrão. Com arrays, é possível usar a mesma abordagem com objetos, ou seja, você pode criar uma instância da classe
set array = ##class(%DynamicArray).%New()

Ou fazer isso usando colchetes []

set array = []
  • %JSON.Adaptor é uma maneira de mapear objetos do ObjectScript (registrado, serial ou persistente) para entidades dinâmicas ou texto JSON.

Vamos analisá-los um pouco mais a fundo.

Digamos que eu esteja trabalhando com um cliente RESTful e precise enviar algumas informações geradas a qualquer momento que não são um objeto do banco de dados, e sim algumas partes dele. Eu posso só criar uma nova instância de %DynamicObject e definir suas propriedades. De certa forma, é semelhante ao que foi feito anteriormente com o %ZEN.ProxyObject. E, é claro, posso ter objetos e arrays integrados como propriedades (ou 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 dessas linhas de código, vamos obter a seguinte string JSON:

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

Além de definir as propriedades ou simplesmente escrever a string JSON dentro dos colchetes

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

há a possibilidade de usar métodos para definir ( %Set() ), obter ( %Get() ) e excluir ( %Remove() ) os valores das propriedades. O mesmo vale para arrays.

E a última classe básica %JSON.Adaptor é usada como superclasse para ativar os recursos do JSON para as classes existentes. Portanto, se houver dados<font color="#000080"> </font>de classe usados no serviço RESTful, é fácil obter uma representação JSON usando o método %ToJSON()  e a ação oposta - %FromJSON(). Também há a possibilidade de serializar e desserializar as classes habilitadas para JSON para strings e streams, se necessário.

Isso conclui este breve tutorial sobre classes JSON e seus usos. Espero que isso ajude você a descobrir a melhor maneira de agir.

Discussão (0)1
Entre ou crie uma conta para continuar