01. DADOS GERAIS
Linha de Produto: | Logix |
---|---|
Segmento: | Tecnologia |
Módulo: | Framework |
Função: | Componente LJsonObject |
Ticket: | 8370362 |
Requisito/Story/Issue (informe o requisito relacionado) : | DFWKTOOLS-1943 |
02. SITUAÇÃO/REQUISITO
Na tentativa de ler propriedades LENGTH, TYPE e VALUE de elementos de um JSON Array utilizando o componente LJsonObject, estão sendo retornados valores incorretos.
A situação ocorria apenas com JSON Array iniciado com o símbolo "[" (colchete) sem definição do TAG com o nome da lista/array, conforme exemplo abaixo:
[ { "tipo":1, "codigo":"11PB220521", "operacao":"ProcessarProduto", "descricao":"Operação ''ProcessarProduto'' executada com sucesso para a chave: 11PB220521." } ]
03. SOLUÇÃO
Correção da leitura e interpretação dos elementos de um JSON Array no componente LJsonObject, quando o formato do Json tiver as características mencionadas anteriormente no tópico 02. Situação/Requisito
Exemplo de código de carga e leitura de JSON ARRAY
#---------------------------# FUNCTION LJSonObject_test() #---------------------------# DEFINE l_json_reference VARCHAR(10) DEFINE l_content VARCHAR(500) DEFINE l_status SMALLINT DEFINE l_value VARCHAR(100) LET l_content = '[ {"tipo":1,"codigo":"11PB220521","operacao":"ProcessarProduto","descricao":"Operação ''ProcessarProduto'' executada com sucesso para a chave: 11PB220521."} ]' LET l_status = _ADVPL_get_property(l_json_reference,"ACTIVATE",l_content CLIPPED) CALL conout("STATUS CONTENT1 = " ||l_status) IF NOT l_status THEN CALL conout("Não foi possível ativar o JSON informado, verifique se o conteúdo e formato são válidos.") ELSE LET l_value =_ADVPL_get_property(l_json_reference,"VALUE","[1]/tipo") CALL conout("Valor do elemento TIPO da ocorrencia 1 da lista = ["||l_value||"]") #Como a lista não possui TAG com a nomenclatura, não é passado parâmetro após o parâmetro da propriedade LENGTH. #Quando a lista tiver nomenclatura, deve-se passar o nome da lista após o parâmetro da propriedade LENGTH. Exemplo: _ADVPL_get_property(l_json_reference,"LENGTH",<nome_lista>) LET l_value = _ADVPL_get_property(l_json_reference,"LENGTH") CALL conout("Tamanho da lista principal = ["||l_value||"]") LET l_value =_ADVPL_get_property(l_json_reference,"TYPE","[1]/descricao") CALL conout("Tipo do elemento TIPO da ocorrencia 1 da lista = ["||l_value||"]") END IF END FUNCTION
Disponível a partir do pacote oficial 12.1.29 ou Framework Fix 12.1.28.(fix01)
IMPORTANTE!
05. ASSUNTOS RELACIONADOS
- Componente LGX - LJSONOBJECT
Visão Geral
Import HTML Content
Conteúdo das Ferramentas
Tarefas