Função FWJsonDeserialize(cJson, @oParseJSON) descontinuada

Bom dia,

A função FWJsonDeserialize foi descontinuada, sendo assim a Totvs disponibilizou as funções JsonObject, mas não funciona, a função antiga ainda esta funcionando mas como faço essa substituição, alguém tem um exemplo claro ?

Verifique se o fonte em anexo lhe ajuda.

Basicamente:

Instancia o objeto Local oJSON := JsonObject():new()

Se gerar algum erro ao enviar o JSON essa variavel vai ser diferente de Nula

cRet := oJson:fromJson(FwNoAccent(cJson))

//Aqui ja e um exemplo pegando valor dentro de fornecedor um array com a chave com o nome Field.

oJson['fornecedor'][nX]['field']

:warning: Atenção: Esta publicação foi transferida automaticamente do fórum antigo, mas os anexos não foram incluídos.

Complementando o oue o bSilva falou, cuidado com os nomes das tags, que é case sensitive, se colocar o nome errado ele retorna NIL.

Pessoal, à partir de qual LIB o JsonObject está disponível?

Aqui não está funcionando, estou fazendo a sintaxe:


oRestGet:setPath(cParmsGet)
oRestGet:Get()
If Left(oRestGet:GetLastError(),3) == "200" //ate aqui OK 
     cRetJson := oRestGet:GetResult()         
     oObjJson := JsonObject():new()
     oObjJson:fromJSON( cRetJson )
EndIf

Mas a função oObjJson:fromJSON( cRetJson ) retorna NIL

Boa tarde Ariane, a classe JsonObject não faz parte da LIB, é uma classe do binário e sim, o método fromJSON retorna nil quando o JSON é parseado corretamente, o JSON acaba ficando no próprio objeto: Classe JsonObject - TOTVSTEC - TDN

https://tdn.totvs.com/display/public/PROT/FWJsonDeserialize+-+Deserializa+uma+string+no+formato+JSON

Prezados, a recomendação desse link é não usarmos mais o FWJsonDeserialize, mas sim a classe JSonObject. A classe JsonObject é muito boa para deserializar os objetos JSON, mas ela não funciona para deserializar arrays. Existe alguma forma de fazer que eu não estou sabendo? E possível postar algum código que deserialize uma string array Json em um array de objetos?

Também estou com mesmo problema e não consegui encontrar solução ainda. Engraçado que em alguns ambientes funciona e em outros não.

Somente respondendo para se alguém tiver o problema em acessar o Json quando é array. Resolvi colocando a posição do array no objeto Json. Exemplo após usar o oJson:fromJSON( cRethttp ), para acessar o a primeira posição, usar: oJson[1][‘code’], posição 2 oJson[2][‘code’]…Pode ser feito um for no oJson por exemplo.