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 ?
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']
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: https://tdn.totvs.com/display/tec/Classe+JsonObject
— Daniel Mendes 01 de Nov de 2019https://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.
— Marcos Natã Santos 21 de Sep de 2020Somente 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.
— Willian Kaneta 17 de Dec de 2021