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.
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.