Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

Índice
exclude.*ndice



...

Este guia tem como objetivo orientar o uso do componente JOLT, apresentando exemplos de uso reais para facilitar integrações.


O que é JOLT?

...

JOLT é uma biblioteca de transformação JSON poderosa e flexível que simplifica o processo de conversão entre diferentes estruturas de dados JSON. É possível mapear e transformar dados JSON rapidamente e com eficiência.


Estruturas JSON

...

O componente JOLT permite execuções e transformações complexas em estruturas JSON, como a renomeação de campos, filtragem de dados e reorganização de objetos por exemplo.


Como funciona a biblioteca de transformação?

...

A biblioteca Jolttransformation trabalha com base no princípio da "especificação por exemplo". É possível fornecer um exemplo de dados JSON de origem e um exemplo JSON de destino que são dados para definir a desejada transformação. 


Como converter estruturas JSON?

...

Com a utilização do JOLT é possível definir um arquivo JSON de transformação que específica regras de conversão entre as estruturas de origem e destino. O componente irá aplicar estas regras para converter os dados JSON de acordo.


Diferentes tipos de transformação

...

O componente JOLT suporta vários tipos de transformação, como:

  • Transformação de objeto a objeto;
  • Transformação de array para array;
  • Transformação da matriz Objectto e vice versa.


Exemplos de transformação

...

Abaixo trazemos alguns exemplo de transformações que podem ser realizadas com JOLT.

  • Renomear campos;
  • Filtrar dados;
  • Reorganizar objetos;
  • Agrupar várias estruturas JSON.


Características avançadas

...

O componente JOLT oferece vários recursos avançados, como expressões, funções personalizadas que permite executar tarefas complexas e transformações precisas. 


Vantagens de usar JOLT

...

O componente JOLT oferece várias vantagens como:

  • Simplicidade no uso;
  • Alta performance;
  • Flexibilidade e extensibilidade;
  • Compatibilidade com estruturas JSON;
  • Extensa documentação e comunidade de apoio.


Exemplos de usos

...

Veja abaixo vários exemplos de uso e dicas que vamos apresentar nesta documentação. Execute os testes clicando aqui

Deck of Cards
historyfalse
idsample
Card
id1
labelExemplo DE\PARA simples

Entrada JSON:

Bloco de código
{
"OláWord":
}
Bloco de código
[ { "operação": "shift", 
	"especificação": {
	"OláWord": "Olá"
} } ]

Saída

Bloco de código
{
"Olá" :
}

Lista de introdução

...

Exemplo de uso DE\PARA em listas;

Deck of Cards
historyfalse
idsample
Card
id1
labelLista de destino sem nome e campo

Image Added

Image Added

  • Na operação Shift quando definimos "*" o objetivo é acessar todos os elementos da lista de pessoas;
  • Com [&1] é definido a lista no destino e seus elementos se organizam.


Saída:

Image Added


...

Deck of Cards
historyfalse
idsample
Card
id1
labelExemplo de lista convertida em outra lista
  • Exemplo de uso onde uma lista será convertida em outra lista, neste caso nome será o termo das propriedades alvo:


Entrada JSON:

Image Added

  • Quando acessamos o nome da lista com "*", iteramos para todos os elementos;
  • Com "@" definimos genericamente os nomes de todos os elementos da lista "nomes".


Saída:

Image Added


...

Deck of Cards
historyfalse
idsample
Card
id1
labelListas de origem (nomes) com elementos campos
  • Lista de origem "nomes" com elementos que possuem campos com nomes definidos. Lista de destino "itens" com nomes diferentes:


Entrada JSON

Image Added

Image Added

  • Com "@" definimos genericamente os nomes de todos os elementos da lista "nomes";
  • Com "items[&1]" definimos a lista "items" na saída.


Saída:

Image Added



...

Deck of Cards
historyfalse
idsamples
Card
id1
labelLista de fontes (nome) com elementos campos
  • Lista de fontes (nomes) com elementos que possuem campos com nomes definidos:


Entrada JSON:

Image Added

Image Added

  • Quando utilizamos o nome dos campos (nome, idade) temos melhor controle sobre cada um deles.


Saída:

Image Added


...

Deck of Cards
historyfalse
idsamples
Card
id1
labelLista de origem "nomes" Destino duas listas "ListName" e "ListAge"
  • Para mostrar apenas valores na lista, remova os nomes de destino (ListName[&1].name)( ListName[&1]???) 


Entrada JSON:

Image Added

Image Added

  • Observe que as listas de destino (ListName[&1] e ListName[&1]) não possuem nomes de campos definidos;
  • No próximo exemplo mostraremos os campos definidos. 


Saída:

Image Added


...

Deck of Cards
historyfalse
idsamples
Card
id1
labelLista de origem "nomes" destino duas listas "ListName" e "ListAge"
  • Com nomes de campo.


Entrada JSON:

Image Added

Image Added

  • Aqui definimos o nome dos campos (nome e idade) e são exibidos na saída.


Saída:

Image Added


...

Deck of Cards
historyfalse
idsamples
Card
id1
labelUnifique duas listas "ListName" e "ListAge"
  • Unifique duas listas "ListName" e "ListAge" em uma lista de destino PersonalData.


Entrada JSON:

Image Added

Image Added

  • Observe que acessamos ListName e ListAge acessamos os campos nome e idade e a lista de destino é definida como PersonalData[&1];
  • Os campos do destino são o nome e a idade.


Saída:

Image Added


...

Deck of Cards
historyfalse
idsamples
Card
id1
labelModificar-substituir-beta
  • Adicione um campo nos elementos da lista de destino. Capture o valor do campo fora da lista "BossName" na operação modificar-substituir-beta.


Entrada JSON:

Image Added

Image Added

  • Na Operação "modify-overwrite-beta" acessamos o campo BossName desta forma @(1,BossName)";
  • Lembre-se que o campo BossName está em posição raiz no json, portanto é acesso com nível "@(1,"
  • Observe que na lista Dados Pessoais acessamos o campo BossName com número 3 no parâmetro de nível de definição
    desta forma "@(3,BossName)".


Saída:

Image Added

  • O valor do campo BossName foi passado para o campo BossName em todos os elementos da lista BossName. 


...

Deck of Cards
historyfalse
idsamples
Card
id1
labelConcatenar nome e sobrenome

Entrada JSON:

Image Added

Image Added

  • Na Operação modificar-overwrite-beta o valor do Campo BossName foi concatenado com o campo "Nome do chefe".
  • O método concat pode receber vários parâmetros separados por vírgulas. O nível é definido de acordo com a localização do campo.
Bloco de código
=concat(@(,Param),'-',@(,Param), '+', @(,Param))
  • O Campo FullName foi criado e passado para o campo BossName ("@(3,FullName)") em todos os elementos da lista PersonalData. O resultado"BossName":"ElisabethKemp" 


Saída:

Image Added


...

Deck of Cards
historyfalse
idsamples
Card
id1
labelOperação remover
  • O objetivo é remover os campos BossName e BossLastName após ingressar e criar o campo fullName para não exibilo na saída. 


Entrada JSON:

Image Added

Image Added

Image Added

  • Observe que na operação remova os campos BossName, BossLastName e FullName, isso nos dá um resultado mais limpo.


Saída:

Image Added


...

Deck of Cards
historyfalse
idsamples
Card
id1
labelCrie uma lista dentro de outra lista
  • A lista de destino é formada por dois campos da lista de origem.


Entrada JSON:

Image Added

Image Added

  • Observe que usamos o elemento “documentos” e para indicar que é uma lista adicionamos [] no final do nome. 
  • Então adicionamos o nome do elemento de destino documentos[].passportData e documentos[].personId. 
  • Detalhe muito importante: os elementos do array são separados.


Saída:

Image Added

Image Added


...

Deck of Cards
historyfalse
idsamples
Card
id1
labelOutra abordagem: crie uma lista dentro de outra lista
  • Introdução especificação de choque com dois turnos de operação. A lista de destino é formada por dois campos da lista de origem.


Entrada JSON:

Image Added

Image Added

Image Added

  • Nesta abordagem temos campos dentro do mesmo elemento;
  • Quando utilizamos as operações SHIFT a segunda é executada com o resultado da primeira;
  • O primeiro Shift transforma os campos Passportdata e Personid em um objeto que possui 2 propriedades;
  • O segundo Shift transforma o objeto em uma lista;
  • Com o caractere @ defini que a origem serão todos os elementos e o destino será uma lista chamada documentos [];
  • O uso de &2 significa que estamos dentro de um objeto;
  • Observe que para definir a lista PesonalData out object use &1e inside object &2;
  • Quando você não mostra as informações no local desejado, o nível (&1, &2) não está definido corretamente;
  • Altere estes elementos para teste e mostre o resultado.


Saída:

Image Added


...

Deck of Cards
historyfalse
idsamples
Card
id1
labelLista de origem com outra lista
  • Nosso objetivo é criar uma lista de destinos com uma lista dentro com outra abordagem.


Entrada JSON:

Image Added