 A classe JsonObject representa um objeto JSON (JavaScript Object Notation). Após ser populado, o valor de cada par chave-valor do JsonObject poderá ser acessados diretamente utilizando sua chave entre colchetes, similar à um vetor. HierarquiaConstrutores PropriedadesAs propriedades serão criadas dinamicamente conforme o uso do objeto.
Métodos Exemplos#include "protheus.ch"
user function exemploJson()
local oJson
local cTextJson
local ret
oJson := JsonObject():New()
cTextJson := '{"itens":[{"joao":"maria","josé":"joana","joaquim":"joaquina","juscelino":"joice"},{"limao":"verde","banana":"amarelo","maça":"vermelho","amora":"roxo"}]}'
ret := oJson:FromJson(cTextJson)
if ValType(ret) == "C"
conout("Falha ao transformar texto em objeto json. Erro: " + ret)
return
endif
u_PrintJson(oJson)
FreeObj(oJson)
return
user function PrintJson(jsonObj)
local i, j
local names
local lenJson
local item
lenJson := len(jsonObj)
if lenJson > 0
for i := 1 to lenJson
u_PrintJson(jsonObj[i])
next
else
names := jsonObj:GetNames()
for i := 1 to len(names)
conout("Label - " + names[i])
item := jsonObj[names[i]]
if ValType(item) == "C"
conout( names[i] + " = " + cvaltochar(jsonObj[names[i]]))
else
if ValType(item) == "A"
conout("Vetor[")
for j := 1 to len(item)
conout("Indice " + cValtochar(j))
u_PrintJson(item[j])
next j
conout("]Vetor")
endif
endif
next i
endif
return
/*
Resultado Impresso no console.log:
Label - itens
Vetor[
Indice 1
Label - joaquim
joaquim = joaquina
Label - juscelino
juscelino = joice
Label - josé
josé = joana
Label - joao
joao = maria
Indice 2
Label - banana
banana = amarelo
Label - amora
amora = roxo
Label - maça
maça = vermelho
Label - limao
limao = verde
]Vetor
*/ |
Observações: O objeto JSON é um objeto dinâmico e suas propriedades são criadas automaticamente quando utilizadas como no exemplo acima. Disponível apenas para P12 build 131227a a partir da versão 13.2.3.6. |