Árvore de páginas

Versões comparadas

Chave

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

Pagetitle
Application Server - 20.3.2.1
Application Server - 20.3.2.1

Estado
colourRed
titleAGUARDANDO HOMOLOGAÇÃO

Exibir filhos

Correções

Expandir
titleTratamento de objetos json "inline"

Incidente: O tratamento de objetos Json "inline", na linha de código, não está respeitando o padrão correto de objetos Json, não sendo possível criar objetos Json vazios, ex: { }, e nem corretamente os arrays de Json [ ], também não permitem que os tipos True, False e Null sejam tratados como tipos Json. 

Solução: O tratamento dos objetos Json foi corrigido para que ele passasse a ser tratado conforme a formatação Json. A principal alteração se dá com array advpl que é representado por "{ }", todavia no padrão Json, isto representa um objeto Json vazio, ou seja, em um código que tenha:
local jJson := { "chave" : {} }
terá como valor um objeto Json vazio.

Tratamentos para o objeto Json inline:
  - faz a expansão de todos os nós do Json avaliando possíveis expressões, funções, e variáveis AdvPL/TLPP, ou seja, os valores das chaves Json, podem vir de variáveis, funções, expressões AdvPL/TLPP, podendo combinar com os tipos primitivos do Json.
  - quando dentro de objetos Json, faz correção de "{ }", para considerar como um "objeto Json" vazio, e não como um "array de AdvPL" vazio, pois este é o padrão correto de da estrutura Json.
  - também quando dentro de objetos Json, faz tratamento especial para os tipos: true, false e null, para que sejam considerados como elementos Json e não tentem extrair como um identificador/variável em Advpl/TLPP, representando os tipos AdvPL: .T., .F. e Nil, respectivamente.
  - Array AdvPL, com elementos, são tratados como array Json. Ex: "chave":{1, 2, "3"}, será transformado em "chave":[1, 2, "3"], este caso é possível pois as estruturas de Array com conteúdo AdvPL, é diferente de um Objeto Json, então foi mantido este comportamento para dar maior poder ao tratamento do objeto Json.
  - Array Json são tratados naturalmente no Json inline. Ex: "chave":[true, 2, "a"]Removido o tratamento histórico do "clipper", de se trocar [ ] por "" em alguns cenários para fontes TLPP. Ex. ':= []'  ou ', []' ou '+ []', ... isto para permitir que os array Json sejam tratados corretamente quando declarados.Obs. para os casos onde se estivesse usando o "{ }" para determinar um array vazio, a recomendação é trocar por uma variável de array vazio.
Ex:
local jVarJson1 := { "valor_deveria_ser_array" : {} } as json   // Neste caso o valor {} será um Json vazio e não mais um array vazio
para manter o comportamento anterior a sugestão é trocar por:
local aArrayVazio := {}
local jVarJson1 := { "valor_deveria_ser_array" : aArrayVazio } as json // Neste caso será sempre um array em qualquer versão

...