Páginas filhas
  • LGX - LJSONOBJECT

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

Pagetitle
LGX - LJSONOBJECT
LGX - LJSONOBJECT
Permite ler e manipular informações no tipo de dados JSON.

Nota

Componente disponível a partir da versão 12.1.18 do Logix.


Hierarquia



Métodos GET


Métodos acessíveis utilizando a função _ADVPL_get_property, que permite recuperar e manipular os valores do componente: 


Expandir
titleGET DEACTIVATE

Método GET: DEACTIVATE

Desativa o conteúdo JSON utilizado liberando recursos na memória do servidor.

Sintaxe



Bloco de código
CALL _ADVPL_set_property(< l_reference >,"DEACTIVATE")

Exemplo



Bloco de código
linenumberstrue
# Ao finalizar o uso, desativa o componente.
CALL _ADVPL_set_property(l_json_reference,"DEACTIVATE")





Expandir
titleSET VALUE

Método SET: VALUE

Define o valor de determinado atributo do JSON.

Sintaxe



Bloco de código
CALL _ADVPL_set_property(< l_reference >,"VALUE", < l_value >, < l_path >)

Parâmetros



Nome

Tipo

Descrição

Obrigatório?

Padrão

l_valueMIXEDValor que será definido para o atributo, o tipo de dado vai depender do tipo da variável.Sim
l_pathCHARCaminho completo do atributo no JSON.Sim


Exemplo



Bloco de código
linenumberstrue
# Altera o atributo "age".
CALL _ADVPL_set_property(l_json_reference,"VALUE",30,"age")






Inclusão de trecho
LJSONOBJECT - Métodos SET
LJSONOBJECT - Métodos SET
nopaneltrue

Métodos SET


Inclusão de trecho
LJSONOBJECT - Métodos SET
LJSONOBJECT - Métodos SET
nopaneltrue

Sintaxe


Bloco de código
LET m_json_reference = _ADVPL_create_component(NULL,"LJSONOBJECT")

Exemplo


Bloco de código
languageruby
themeConfluence
linenumberstrue
#------------------------------------------------------------------------------#
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