Histórico da Página
...
Bloco de código |
---|
LET m_json_reference = _ADVPL_create_component(NULL,"LJSONOBJECT") |
Exemplo
Bloco de código | ||||||
---|---|---|---|---|---|---|
| ||||||
#------------------------------------------------------------------------------# FUNCTION LJSONObjectExemplo() #------------------------------------------------------------------------------# DEFINE l_json_reference VARCHAR(10) DEFINE l_status SMALLINT DEFINE l_json_data CHAR(500) DEFINE l_ind SMALLINT DEFINE l_phones SMALLINT DEFINE lr_person RECORD firstName CHAR(50), lastName CHAR(50), age SMALLINT, adress RECORD streetAddress CHAR(50), city CHAR(50), state CHAR(50), postalCode INTEGER END RECORD, phoneNumber ARRAY[] OF RECORD category CHAR(10), number CHAR(12) END RECORD END RECORD INITIALIZE lr_person.* TO NULL LET l_json_data = l_json_data CLIPPED, '{' LET l_json_data = l_json_data CLIPPED, '"firstName": "John",' LET l_json_data = l_json_data CLIPPED, '"lastName": "Smith",' LET l_json_data = l_json_data CLIPPED, '"age": 25,' LET l_json_data = l_json_data CLIPPED, '"address": {' LET l_json_data = l_json_data CLIPPED, '"streetAddress": "21 2nd Street",' LET l_json_data = l_json_data CLIPPED, '"city": "New York",' LET l_json_data = l_json_data CLIPPED, '"state": "NY",' LET l_json_data = l_json_data CLIPPED, '"postalCode": "10021"' LET l_json_data = l_json_data CLIPPED, '},' LET l_json_data = l_json_data CLIPPED, '"phoneNumber": [{' LET l_json_data = l_json_data CLIPPED, '"category": "home",' LET l_json_data = l_json_data CLIPPED, '"number": "212 555-1234"' LET l_json_data = l_json_data CLIPPED, '}, {' LET l_json_data = l_json_data CLIPPED, '"category": "fax",' LET l_json_data = l_json_data CLIPPED, '"number": "646 555-4567"' LET l_json_data = l_json_data CLIPPED, '}]' LET l_json_data = l_json_data CLIPPED, '}' LET l_json_reference = _ADVPL_create_component(NULL,"LJSONOBJECT") LET l_status = _ADVPL_get_property(l_json_reference,"ACTIVATE",l_json_data CLIPPED) IF NOT l_status THEN CALL log0030_processa_mensagem("Não foi possível ativar o JSON informado, verifique se o mesmo é válido.","stop",0) RETURN FALSE END IF # Recupera os valores dos atributos do objeto principal. LET lr_person.firstName = _ADVPL_get_property(l_json_reference,"VALUE","firstName") LET lr_person.lastName = _ADVPL_get_property(l_json_reference,"VALUE","lastName") LET lr_person.age = _ADVPL_get_property(l_json_reference,"VALUE","age") # Recupera os valores dos atributos do objeto "address". LET lr_person.adress.streetAddress = _ADVPL_get_property(l_json_reference,"VALUE","address/streetAddress") LET lr_person.adress.city = _ADVPL_get_property(l_json_reference,"VALUE","address/city") LET lr_person.adress.state = _ADVPL_get_property(l_json_reference,"VALUE","address/state") LET lr_person.adress.postalCode = _ADVPL_get_property(l_json_reference,"VALUE","address/postalCode") # Recupera a quantidade de "phoneNumber". LET l_phones = _ADVPL_get_property(l_json_reference,"LENGTH","phoneNumber") FOR l_ind = 1 TO l_phones # Adiciona um novo "phoneNumber" no ARRAY. CALL ArrayAddItem(lr_person.phoneNumber,1) # Recupera os valores dos atributos do objeto "phoneNumber" para a linha atual. LET lr_person.phoneNumber[l_ind].category = _ADVPL_get_property(l_json_reference,"VALUE","phoneNumber["|| l_ind USING "<<<<<"||"]/category") LET lr_person.phoneNumber[l_ind].number = _ADVPL_get_property(l_json_reference,"VALUE","phoneNumber["|| l_ind USING "<<<<<"||"]/number") END FOR # Emite no CONSOLE os dados recuperados. CALL CONOUT("FIRST NAME....: " || lr_person.firstName CLIPPED) CALL CONOUT("LAST NAME.....: " || lr_person.lastName CLIPPED) CALL CONOUT("AGE...........: " || lr_person.age USING "<<<<<") CALL CONOUT("ADRESS---------") CALL CONOUT("STREET ADDRESS: " || lr_person.adress.streetAddress CLIPPED) CALL CONOUT("CITY..........: " || lr_person.adress.city CLIPPED) CALL CONOUT("STATE.........: " || lr_person.adress.state CLIPPED) CALL CONOUT("POSTAL CODE...: " || lr_person.adress.postalCode USING "<<<<<<<<<&") # Recupera a quantidade de "phoneNumber" a partir do ARRAY. LET l_phones = ArrayLength(lr_person.phoneNumber) FOR l_ind = 1 TO l_phones #CALL CONOUT("PHONE 01-----------") CALL CONOUT("PHONE "|| l_ind USING "<<<&&" ||"-------") CALL CONOUT("CATEGORY......: " || lr_person.phoneNumber[l_ind].category CLIPPED) CALL CONOUT("NUMBER........: " || lr_person.phoneNumber[l_ind].number CLIPPED) END FOR # Altera a idade e a cidade do "John Smith". LET lr_person.age = 30 LET lr_person.adress.city = "Los Angeles" CALL _ADVPL_set_property(l_json_reference,"VALUE",lr_person.age,"age") CALL _ADVPL_set_property(l_json_reference,"VALUE",lr_person.adress.city CLIPPED,"address/city") # Serializa o JSON alterado e emite o novo conteúdo no CONSOLE. LET l_json_data = _ADVPL_get_property(l_json_reference,"SERIALIZE") CALL CONOUT(l_json_data) # Ao finalizar o uso, desativa o componente. CALL _ADVPL_set_property(l_json_reference,"DEACTIVATE") RETURN TRUE END FUNCTION |
Visão Geral
Import HTML Content
Conteúdo das Ferramentas
Tarefas