FAQs - Suporte técnico

MP - ADVPL - Classe JsonObject


Dúvida

 Ao utilizar a classe JsonObject o método fromJson  com a expressão abaixo funciona.

'{"name":"John", "age":31, "city":"New York"}'


Mas no Formato a frente não retorna o objeto corretamente, retorna somente a expressão DATA 

'{"DATA": [{"ID_COMPANY_FK": "5022","COD_ESTAB_PK": "01"}]}'

 


Ambiente
Protheus – ADVPL – A partir da versão P12.1.25

Solução
O retorno do objeto traz a propriedade DATA pois ocorre que o Json enviado é recursivo e neste caso deve tratar e utilizar o método GetJsonObject que retorna um objeto JSON que seja o conteúdo de uma propriedade em outro objeto JSON.

Exemplo funcional

#include 'protheus.ch'
#include 'parmtype.ch'
#Include 'Totvs.ch'

User Function JSONTST2()

Local oJsonA := Nil
Local oJsonB := Nil
Local cParseRes := ''
Local cJsonStr := ''
Local array := {}
Local array1 := {}
Local array2 := {}
Local nl := 0

cJsonStr:= '{"DATA": [{"ID_COMPANY_FK": "5022","COD_ESTAB_PK": "01"}]}'


oJsonA := JsonObject():new()
cParseRes := oJsonA:fromJson(cJsonStr)

array:= oJsonA:GetNames()
Varinfo("Conteudo oJsonA:GetNames", array)


oJsonB := JsonObject():new()
oJsonB := oJsonA:GetJsonObject(ARRAY[1])

oJsonB[1]:toJSON()
oJsonB[2]:toJSON()

array1:= oJsonB[1]:GetNames()
Varinfo("Conteudo oJsonB[1]:GetNames", array1)

array2:= oJsonB[2]:GetNames()
Varinfo("Conteudo oJsonB[2]:GetNames", array2)

For nL := 1 to len( array1 )
ConOut ( array1[nL] )
Conout ( oJsonB[1]:GetJsonText( array1[nL] ) )
Next nL

For nL := 1 to len( array2 )
ConOut ( array2[nL] )
Conout ( oJsonB[2]:GetJsonText( array2[nL] ) )
Next nL

FreeObj(oJsonA)
FreeObj(oJsonB)

return

Obs.: Caso esse exemplo não lhe atenda utilize o exemplo da Classe JsonObject


Saiba Mais

JSON

Esse artigo foi útil?
Usuários que acharam isso útil: 0 de 0

0 Comentários

Por favor, entre para comentar.
X Fechar

Olá ,

Há pendência referente a um de seus produtos contratados para a empresa ().

Entre em contato com o Centro de Serviços TOTVS para tratativa.

Ligue! 4003-0015 opção 4 e 9 ou registre uma solicitação para CST – Cobrança – Verificação de pendências financeiras . clique aqui.

TOTVS

X Fechar

Olá ,

Seu contato não está cadastrado no Portal do Cliente como um perfil autorizado a solicitar consultoria telefônica.

Por gentileza, acione o administrador do Portal de sua empresa para: (1)configurar o seu acesso ou (2)buscar um perfil autorizado para registro desse atendimento.

Em caso de dúvidas sobre a identificação do contato administrador do Portal, ligue (11) 4003-0015, opção 7 e, em seguida, opção 4 para buscar o suporte com o time de Assessoria ao Portal do Cliente. . clique aqui.

TOTVS

X Fechar

Olá ,

Para o atendimento de "Consultoria Telefônica" você deverá estar de acordo com o Faturamento.

TOTVS

X Fechar

Olá,

Algo inesperado ocorreu, e o usuario nao foi reconhecido ou você nao se encontra logado

Por favor realize um novo login

Em caso de dúvidas, entre em contato com o administrador do Portal de Clientes de sua empresa para verificação do seu usuário, ou Centro de Serviços TOTVS.

Ligue! 4003-0015 opção 4 e 9 ou registre uma solicitação para CST – Cadastros . clique aqui.

TOTVS

Chat _

Preencha os campos abaixo para iniciar o atendimento:

Chat _