Page tree
Skip to end of metadata
Go to start of metadata

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.

Hierarquia

  • JsonObject

Construtores

Propriedades

As 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.