...
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 |
---|
|
Card |
---|
id | 1 |
---|
label | Exemplo 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 |
---|
|
Card |
---|
id | 1 |
---|
label | Lista 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 |
---|
|
Card |
---|
id | 1 |
---|
label | Exemplo 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 |
---|
|
Card |
---|
id | 1 |
---|
label | Listas 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 |
---|
|
Card |
---|
id | 1 |
---|
label | Lista 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 |
---|
|
Card |
---|
id | 1 |
---|
label | Lista 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 |
---|
|
Card |
---|
id | 1 |
---|
label | Lista de origem "nomes" destino duas listas "ListName" e "ListAge" |
---|
|
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 |
---|
|
Card |
---|
id | 1 |
---|
label | Unifique 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 |
---|
|
Card |
---|
id | 1 |
---|
label | Modificar-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 |
---|
|
Card |
---|
id | 1 |
---|
label | Concatenar 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 |
---|
|
Card |
---|
| - 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 |
---|
|
Card |
---|
id | 1 |
---|
label | Crie 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 |
---|
|
Card |
---|
id | 1 |
---|
label | Outra 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 |
---|
|
Card |
---|
id | 1 |
---|
label | Lista de origem com outra lista |
---|
| - Nosso objetivo é criar uma lista de destinos com uma lista dentro com outra abordagem.
Entrada JSON: Image Added |
|