Saltar para o conteúdo principal
Versão: Próximo

Selection to JSON

Selection to JSON ( aTabela {; oCampo}{; oCampo2 ; ... ; oCampoN}{; modelo}) -> Resultado

ParâmetroTipoDescrição
aTabelaTabela🡒Tabela a serializar
oCampoCampo🡒Campo(s) cujo(s) conteúdos devem ser serializados
modeloObjeto🡒Objeto para a seleção de etiquetas e de campos
ResultadoTexto🡐Cadeia que contém o array JSON serializado

Descrição

O comando Selection to JSON devolve uma cadeia JSON que contém os valores dos campos da seleção atual de aTabela. Cada elemento do array é um objeto JSON contendo as etiquetas e valores dos campos da seleção.

Caso passe só o parâmetro aTabela, o comando inclui, na cadeia JSON, os valores de todos os campos da tabela que podem ser expressados em JSON. Os campos tipo BLOB e imagem são ignorados.

Se não deseja incluir todos os campos de aTabela, pode utilizar o parâmetro oCampo ou o parâmetro modelo:

  • oCampo: passe um ou mais campos neste parâmetro. Só os valores dos campos definidos são incluídos na cadeia JSON.
  • modelo: passe um objeto 4D que contém um ou mais pares nome/valor onde valor contém um ponteiro a um campo à incluir (ver o exemplo 3).

Este comando suporta campos tipo Objeto: os dados desses campos são automaticamente convertidos ao formato JSON. Note que o comando 4D abaixo pode ser interpretado como "produza JSON de todos os valores de objetoCampo na seleção atual da tabela":

 Selection to JSON([aTable];objectField)

Nota: Depois de uma chamada a Selection to JSON, a seleção atual e registro atual permanecem o mesmo, mas o registro atual não é mais carregado. e poderia ter mudado (o último registro da seleçao atual é então o registro atual). Depois do comando Selection to JSON, utilize os comandos LOAD RECORD em combinação com GOTO SELECTED RECORD (se for necessário) utilize os valores dos campos no registro atual.

Exemplo 1

Quer criar uma cadeia JSON que represente esta seleção:

  1. Deseja incluir os valores de todos os campos da tabela [Members]:
 $jsonString :=Selection to JSON([Members])
  // $jsonString =[{"LastName":"Durant","FirstName":"Mark","Address":
  //"25 Park St","Zip code":"15205","City":"Pittsburgh"},{"LastName":
  //"Smith","FirstName":"John","Address":"24 Philadelphia Ave","Zip code":
  //"75203","City":"Dallas"},{"LastName":"Anderson","FirstName"
  //:"Adeline","Address":"37 Market St","Zip code":"45205","City":"Cincinnati"},...]
  1. Deseja reduzir a seleção e só incluir dois campos na cadeia JSON utilizando a sintaxe baseada nos campos:
 QUERY([Members];[Members]LastName="A@")
 $jsonString :=Selection to JSON([Members];[Members]LastName;[Members]City)
  // $jsonString = [{"LastName":"Anderson","City":"Cincinnati"},
  // {"LastName":"Albert","City":"Houston"}]
  1. Só deseja incluir um campo na cadeia JSON utilizando a sintaxe do modelo:
 var $template : Object
 OB SET($template;"LastName";->[Members]LastName) // um só campo
 ALL RECORDS([Members])
 $jsonString :=Selection to JSON([Members];$template)
  // $jsonString = [{"LastName":"Durant"},{"LastName":"Smith"},{"LastName":"Anderson"},{"LastName":"Albert"},
  // {"LastName":"Leonard"},{"LastName":"Pradel"}]

Exemplo 2

Pode usar a sintaxe modelo para exportar campos de tabelas diferentes:

 var $template : Object
 var $jsonString : Text
 OB SET($template;"Last name";->[Emp]LastName)
 OB SET($template;"First name";->[Emp]FirstName)
 OB SET($template;"Company";->[Company]LastName) //etiqueta personalizada de outro modo entra em conflito com campo [Emp]LastName
 ALL RECORDS([Emp])
 SET FIELD RELATION([Emp]UUID_Company;Automatic;Do not modify)
 $jsonString:=Selection to JSON([Emp];$template)
 SET FIELD RELATION([Emp]UUID_Company;Structure configuration;Do not modify)

Ver também

JSON TO SELECTION