Páginas filhas
  • 8370362 DFWKTOOLS-1943 DT LJsonObject - Falha leitura elementos Json Array

Versões comparadas

Chave

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


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:

Bloco de código
[ 
  { "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


Bloco de código
languageruby
themeConfluence
titleExemplo de código de carga e leitura de JSON ARRAY
linenumberstrue
#---------------------------#
 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



Card documentos
InformacaoDisponível a partir do pacote oficial 12.1.29 ou Framework Fix 12.1.27.(fix03)
TituloIMPORTANTE!

05. ASSUNTOS RELACIONADOS



Templatedocumentos


HTML
<style>
div.theme-default .ia-splitter #main {
    margin-left: 0px;
}
.ia-fixed-sidebar, .ia-splitter-left {
    display: none;
}
#main {
    padding-left: 10px;
    padding-right: 10px;
    overflow-x: hidden;
}

.aui-header-primary .aui-nav,  .aui-page-panel {
    margin-left: 0px !important;
}
.aui-header-primary .aui-nav {
    margin-left: 0px !important;
}

.aui-tabs.horizontal-tabs>.tabs-menu>.menu-item.active-tab a::after { 
	background: #FF9900; !important 
}

.menu-item.active-tab { 
	border-bottom: none !important; 
}

</style>