Árvore de páginas

Versões comparadas

Chave

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

...

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

Entrada JSON:

Bloco de código
{
   "OláWordHelloWord":2024
}
Bloco de código
[
   {
      "operaçãooperation": "shift", 
	"especificação
      "spec": {
	"OláWord         "HelloWord": "OláHello"
      }
   } 
]

Saída

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

Lista de introdução

...

Exemplo de uso DE\PARA em listas;

  • Exemplo de uso onde uma lista será convertida em outra lista, neste caso nome será o termo das propriedades alvo:

Entrada JSON:

Image Removed

  • 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 Removed

  • Lista de origem "nomes" com elementos que possuem campos com nomes definidos. Lista de destino "itens" com nomes diferentes:

Entrada JSON

Image Removed

Image Removed

  • 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 Removed

  • Lista de fontes (nomes) com elementos que possuem campos com nomes definidos:

Entrada JSON:

Image Removed

Image Removed

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

Saída:

Image Removed

  • Para mostrar apenas valores na lista, remova os nomes de destino (ListName[&1].name)( ListName[&1]???) 

Entrada JSON:

Image Removed

Image Removed

  • 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 Removed

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

Image RemovedEntrada JSON:

Image Removed

  • 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 Removed

Deck of Cards
historyfalse
idsample
Card
id1
labelExemplo de lista convertida em outra lista
Deck of Cards
historyfalse
idsample
Card
id1
labelListas de origem (nomes) com elementos campos
Deck of Cards
historyfalse
idsamples
Card
id1
labelLista de fontes (nome) com elementos campos
Deck of Cards
historyfalse
idsamples
Card
id1
labelLista de origem "nomes" Destino duas listas "ListName" e "ListAge"
Bloco de código
{
   "people":[
      {
         "name":"Jonh",
         "age":30
      },
      {
         "name":"Mary",
         "age":25
      }
   ]
}


Jolt Spec:

Bloco de código
[
   {
      "operation":"shift",
      "spec":{
         "people":{
            "*":{
               "name":"[&1].first_name",
               "age":"[&1].age"
            }
         }
      }
   }
]
  • 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:

Bloco de código
[
   {
      "first_name":"Jonh",
      "age":30
   },
   {
      "first_name":"Mary",
      "age":25
   }
]


...

  • Com nomes de campo.

Entrada JSON:

Image Removed

Image Removed

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

Saída:

Image Removed

  • 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 Removed

Image Removed

  • 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 Removed

Deck of Cards
historyfalse
idsamples
Card
id1
labelLista de origem "nomes" destino duas listas "ListName" e "ListAge"
Deck of Cards
historyfalse
idsamplessample
Card
id1
labelUnifique duas listas "ListName" e "ListAge"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:Unifique duas listas "ListName" e "ListAge" em uma lista de destino PersonalData.


Entrada JSON:

Image Removed

Image Removed

  • 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 Removed

Deck of Cards
historyfalse
idsamples
Card
id1
labelModificar-substituir-beta
Bloco de código
{
   "names":[
      "John",
      "Jane",
      "Jack"
   ]
}


Jolt Spec:

Bloco de código
[
   {
      "operation":"shift",
      "spec":{
         "names":{
            "*":{
               "@":"[&1].name"
            }
         }
      }
   }
]


  • 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:

Bloco de código
[
   {
      "name":"John"
   },
   {
      "name":"Jane"
   },
   {
      "name":"Jack"
   }
]


...

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

Entrada JSON:

Image Removed

Image Removed

  • 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.
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:

Bloco de código
{
   "names":[
      {
         "name":"John"
      },
      {
         "name":"Jane"
      },
      {
         "name":"Jack"
      }
   ]
}


Jolt Spec:

Bloco de código
[
   {
      "operation":"shift",
      "spec":{
         "names":{
            "*":{
               "@":"items[&1]"
            }
         }
      }
   }
]


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


Saída:

Bloco de código
{
   "items":[
      {
         "name":"John"
      },
      {
         "name":"Jane"
      },
      {
         "name":"Jack"
      }
   ]
}
Deck of Cards
historyfalse
idsamples
Card
id1
labelConcatenar nome e sobrenome
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 Removed

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 Removed

Image Removed

Image Removed

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

Saída:

Image Removed

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 Removed

Image Removed

  • 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 Removed

Image Removed


...

Deck of Cards
historyfalse
idsamples
Card
id1
labelOutra abordagem: crie uma lista dentro de outra listaLista de fontes (nome) com elementos campos
  • Lista de fontes (nomes) com elementos que possuem campos com nomes definidos: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 Removed

Image Removed

Image Removed

  • 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 Removed

Bloco de código
{
   "names":[
      {
         "name":"John",
         "age":25
      },
      {
         "name":"Jane",
         "age":30
      },
      {
         "name":"Jack",
         "age":35
      }
   ]
}


Jolt Spec:

Bloco de código
[
   {
      "operation":"shift",
      "spec":{
         "names":{
            "*":{
               "name":"items[&1].name",
               "age":"items[&1].age"
            }
         }
      }
   }
]


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


Saída:

Bloco de código
{
   "items":[
      {
         "name":"John",
         "age":25
      },
      {
         "name":"Jane",
         "age":30
      },
      {
         "name":"Jack",
         "age":35
      }
   ]
}


...

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:

Bloco de código
{
   "names":[
      {
         "name":"John",
         "age":25
      },
      {
         "name":"Jane",
         "age":30
      },
      {
         "name":"Jack",
         "age":35
      }
   ]
}


Json Spec:

Bloco de código
[
   {
      "operation":"shift",
      "spec":{
         "names":{
            "*":{
               "name":"ListName[&1]",
               "age":"ListAge[&1]"
            }
         }
      }
   }
]


  • 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:

Bloco de código
{
   "ListName":["John","Jane","Jack"],
   "ListAge":[25,30,35]
}


...

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


Entrada JSON:

Bloco de código
{
   "names":[
      {
         "name":"John",
         "age":25
      },
      {
         "name":"Jane",
         "age":30
      },
      {
         "name":"Jack",
         "age":35
      }
   ]
}


Json Spec:

Bloco de código
[
   {
      "operation":"shift",
      "spec":{
         "names":{
            "*":{
               "name":"ListName[&1].name",
               "age":"ListAge[&1].age"
            }
         }
      }
   }
]


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


Saída:

Bloco de código
{
   "ListName":[
      {
         "name":"John"
      },
      {
         "name":"Jane"
      },
      {
         "name":"Jack"
      }
   ],
   "ListAge":[
      {
         "age":25
      },
      {
         "age":30
      },
      {
         "age":35
      }
   ]
}


...

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:

Bloco de código
{
   "ListName":[
      {
         "name":"John"
      },
      {
         "name":"Jane"
      },
      {
         "name":"Jack"
      }
   ],
   "ListAge":[
      {
         "age":25
      },
      {
         "age":30
      },
      {
         "age":35
      }
   ]
}


Json Spec:

Bloco de código
[
   {
      "operation":"shift",
      "spec":{
         "ListName":{
            "*":{
               "name":"PersonalData[&1].name"
            }
         },
         "ListAge":{
            "*":{
               "age":"PersonalData[&1].age"
            }
         }
      }
   }
]


  • 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:

Bloco de código
{
   "PersonalData":[
      {
         "name":"John",
         "age":25
      },
      {
         "name":"Jane",
         "age":30
      },
      {
         "name":"Jack",
         "age":35
      }
   ]
}


...

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:

Bloco de código
{
   "BossName":"Elisabeth",
   "PersonalData":[
      {
         "name":"John",
         "age":25
      },
      {
         "name":"Jane",
         "age":30
      },
      {
         "name":"Jack",
         "age":35
      }
   ]
}


Json Spec:

Bloco de código
[
   {
      "operation":"shift",
      "spec":{
         "BossName":"BossName",
         "PersonalData":{
            "*":{
               "name":"PersonalData[&1].name",
               "age":"PersonalData[&1].age"
            }
         }
      }
   },
   {
      "operation":"modify-overwrite-beta",
      "spec":{
         "BossName":"@(1,BossName)",
         "PersonalData":{
            "*":{
               "BossName":"@(3,BossName)"
            }
         }
      }
   }
]


  • 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:

Bloco de código
{
   "BossName":"Elisabeth",
   "PersonalData":[
      {
         "name":"John",
         "age":25,
         "BossName":"Elisabeth"
      },
      {
         "name":"Jane",
         "age":30,
         "BossName":"Elisabeth"
      },
      {
         "name":"Jack",
         "age":35,
         "BossName":"Elisabeth"
      }
   ]
}


  • 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:

Bloco de código
{
   "BossName":"Elisabeth",
   "BossLastName":"Kemp",
   "PersonalData":[
      {
         "name":"John",
         "age":25
      },
      {
         "name":"Jane",
         "age":30
      },
      {
         "name":"Jack",
         "age":35
      }
   ]
}


Json Spec:

Bloco de código
{
   "BossName":"Elisabeth",
   "BossLastName":"Kemp",
   "PersonalData":[
      {
         "name":"John",
         "age":25
      },
      {
         "name":"Jane",
         "age":30
      },
      {
         "name":"Jack",
         "age":35
      }
   ]
}


  • 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:

Bloco de código
[
   {
      "operation":"shift",
      "spec":{
         "BossName":"BossName",
         "BossLastName":"BossLastName",
         "PersonalData":{
            "*":{
               "name":"PersonalData[&1].name",
               "age":"PersonalData[&1].age"
            }
         }
      }
   },
   {
      "operation":"modify-overwrite-beta",
      "spec":{
         "BossName":"@(1,BossName)",
         "FullName":"=concat(@(1,BossName),' ',@(1,BossLastName))",
         "PersonalData":{
            "*":{
               "BossName":"@(3,FullName)"
            }
         }
      }
   }
]


...

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:

Bloco de código
{
   "BossName":"Elisabeth",
   "BossLastName":"Kemp",
   "PersonalData":[
      {
         "name":"John",
         "age":25,
         "BossName":"Elisabeth Kemp"
      },
      {
         "name":"Jane",
         "age":30,
         "BossName":"Elisabeth Kemp"
      },
      {
         "name":"Jack",
         "age":35,
         "BossName":"Elisabeth Kemp"
      }
   ],
   "FullName":"Elisabeth Kemp"
}


Json Spec:

Bloco de código
[
   {
      "operation":"shift",
      "spec":{
         "BossName":"BossName",
         "BossLastName":"BossLastName",
         "PersonalData":{
            "*":{
               "name":"PersonalData[&1].name",
               "age":"PersonalData[&1].age"
            }
         }
      }
   },
   {
      "operation":"modify-overwrite-beta",
      "spec":{
         "BossName":"@(1,BossName)",
         "FullName":"=concat(@(1,BossName),' ',@(1,BossLastName))",
         "PersonalData":{
            "*":{
               "BossName":"@(3,FullName)"
            }
         }
      }
   },
   {
      "operation":"remove",
      "spec":{
         "BossName":"",
         "BossLastName":"",
         "FullName":""
      }
   }
]


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


Saída:

Bloco de código
{
   "PersonalData":[
      {
         "name":"John",
         "age":25,
         "BossName":"Elisabeth Kemp"
      },
      {
         "name":"Jane",
         "age":30,
         "BossName":"Elisabeth Kemp"
      },
      {
         "name":"Jack",
         "age":35,
         "BossName":"Elisabeth Kemp"
      }
   ]
}


...

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:

Bloco de código
{
   "PersonalData":[
      {
         "name":"John",
         "age":25,
         "passportData":"Passport123",
         "personId":10
      },
      {
         "name":"Jane",
         "age":30,
         "passportData":"Passport456",
         "personId":20
      },
      {
         "name":"Jack",
         "age":35,
         "passportData":"Passport789",
         "personId":30
      }
   ]
}


Json Spec:

Bloco de código
[
   {
      "operation":"shift",
      "spec":{
         "PersonalData":{
            "*":{
               "name":"PersonalData[&1].name",
               "age":"PersonalData[&1].age",
               "passportData":"PersonalData[&].documents[].passportData",
               "personId":"PersonalData[&1].documents[].personId"
            }
         }
      }
   }
]


  • 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:

Bloco de código
{
   "PersonalData":[
      {
         "name":"John",
         "age":25,
         "documents":[
            {
               "passportData":"Passport123"
            },
            {
               "personId":10
            }
         ]
      },
      {
         "name":"Jane",
         "age":30,
         "documents":[
            {
               "passportData":"Passport456"
            },
            {
               "personId":20
            }
         ]
      },
      {
         "name":"Jack",
         "age":35,
         "documents":[
            {
               "passportData":"Passport789"
            },
            {
               "personId":30
            }
         ]
      }
   ]
}
  • SoWeHave the List Documents Inside List Personaldata


...

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:

Bloco de código
{
   "PersonalData":[
      {
         "name":"John",
         "age":25,
         "passportData":"Passport123",
         "personId":10
      },
      {
         "name":"Jane",
         "age":30,
         "passportData":"Passport456",
         "personId":20
      },
      {
         "name":"Jack",
         "age":35,
         "passportData":"Passport789",
         "personId":30
      }
   ]
}


Json Spec:

Bloco de código
[
   {
      "operation":"shift",
      "spec":{
         "PersonalData":{
            "*":{
               "name":"PersonalData[&1].name",
               "age":"PersonalData[&1].age",
               "passportData":"PersonalData[&1].documents.passportData",
               "personId":"PersonalData[&1].documents.personId"
            }
         }
      }
   },
   {
      "operation":"shift",
      "spec":{
         "PersonalData":{
            "*":{
               "name":"PersonalData[&1].name",
               "age":"PersonalData[&1].age",
               "personId":"PersonalData[&1].personId",
               "documents":{
                  "@":"PersonalData[&2].documents[]"
               }
            }
         }
      }
   }
]


  • 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:

Bloco de código
{
   "PersonalData":[
      {
         "name":"John",
         "age":25,
         "documents":[
            {
               "passportData":"Passport123",
               "personId":10
            }
         ]
      },
      {
         "name":"Jane",
         "age":30,
         "documents":[
            {
               "passportData":"Passport456",
               "personId":20
            }
         ]
      },
      {
         "name":"Jack",
         "age":35,
         "documents":[
            {
               "passportData":"Passport789",
               "personId":30
            }
         ]
      }
   ]
}


...

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:

Bloco de código
{
   "PersonalData":[
      {
         "name":"John",
         "age":25,
         "documents":[
            {
               "passportData":"Passport123",
               "personId":10
            }
         ],
         "personId":10
      },
      {
         "name":"Jane",
         "age":30,
         "documents":[
            {
               "passportData":"Passport456",
               "personId":20
            }
         ],
         "personId":20
      },
      {
         "name":"Jack",
         "age":35,
         "documents":[
            {
               "passportData":"Passport789",
               "personId":30
            }
         ],
         "personId":30
      }
   ]
}


Json Spec:

Bloco de código
[
   {
      "operation":"shift",
      "spec":{
         "PersonalData":{
            "*":{
               "name":"PersonalData[&1].name",
               "age":"PersonalData[&1].age",
               "personId":"PersonalData[&1].personId",
               "documents":{
                  "*":{
                     "passportData":"PersonalData[&1].ListOfDocuments[&1].passportData",
                     "personId":"PersonalData[&3].ListOfDocuments[&1].personId"
                  }
               }
            }
         }
      }
   }
]


Saída:

Bloco de código
{
   "PersonalData":[
      {
         "name":"John",
         "age":25,
         "personId":10,
         "ListOfDocuments":[
            {
               "passportData":"Passport123",
               "personId":10
            }
         ]
      },
      {
         "name":"Jane",
         "age":30,
         "personId":20,
         "ListOfDocuments":[
            {
               "passportData":"Passport456",
               "personId":20
            }
         ]
      },
      {
         "name":"Jack",
         "age":35,
         "personId":30,
         "ListOfDocuments":[
            {
               "passportData":"Passport789",
               "personId":30
            }
         ]
      }
   ]
}


...

Deck of Cards
historyfalse
idsamples
Card
id1
labelElemento de acesso fixado na lista
  • As vezes, as listas possuem elementos com informações fixas e imutáveis. Acessaremos as informações definindo o índice de lista de cada elemento.


Entrada JSON:

Bloco de código
{
   "PersonalData":[
      {
         "name":"John",
         "age":25,
         "documents":[
            {
               "passportData":"Passport123",
               "personId":10
            },
            {
               "Address":"Washington Street"
            }
         ]
      },
      {
         "name":"Jane",
         "age":30,
         "documents":[
            {
               "passportData":"Passport456",
               "personId":20
            },
            {
               "Address":"Washington Street"
            }
         ]
      },
      {
         "name":"Jack",
         "age":35,
         "documents":[
            {
               "passportData":"Passport789",
               "personId":30
            },
            {
               "Address":"Riverside Drive"
            }
         ]
      }
   ]
}


Jolt Spec:

Bloco de código
[
   {
      "operation":"shift",
      "spec":{
         "PersonalData":{
            "*":{
               "name":"PersonalData[&1].name",
               "age":"PersonalData[&1].age",
               "documents":{
                  "0":{
                     "passportData":"PersonalData[&3].passport"
                  },
                  "1":{
                     "Address":"PersonalData[&3].AdressData"
                  }
               }
            }
         }
      }
   }
]


  • Observe que ao acessar os elementos da lista usamos "*" e para acessar o primeiro elemento usamos "0";
  • Desta forma acessamos as informações do campo Dados do passaporte e transformamos em passaporte;
  • Este exemplo tem uma forma diferente de definir o campo em Dado Pessoais, utilize o &3 pois estamos dentro do listar documentos;
  • Não é obrigatório acessar os elementos da sequência como no exemplo;
  • Este exemplo só será útil para casos onde a lista de origem possui elementos que não mudam de lugar dinamicamente. Os elementos devem estar sempre em posições fixas.


Saída:

Bloco de código
{
   "PersonalData":[
      {
         "name":"John",
         "age":25,
         "passport":"Passport123",
         "AdressData":"Washington Street"
      },
      {
         "name":"Jane",
         "age":30,
         "passport":"Passport456",
         "AdressData":"Washington Street"
      },
      {
         "name":"Jack",
         "age":35,
         "passport":"Passport789",
         "AdressData":"Riverside Drive"
      }
   ]
}


...

Deck of Cards
historyfalse
idsamples
Card
id1
labelElemento de uma lista que possui o tipo de informação em propriedade
  • Neste exemplo, definimos o valor do campo de destino com dados de um campo de origem.


Entrada JSON:

Bloco de código
{
   "PersonalData":[
      {
         "name":"John",
         "age":25,
         "documents":[
            {
               "Type":"Passport",
               "value":"123",
               "personId":10
            },
            {
               "Address":"Washington Street"
            }
         ]
      },
      {
         "name":"Jane",
         "age":30,
         "documents":[
            {
               "Type":"Passport",
               "value":"456",
               "personId":20
            },
            {
               "Address":"Washington Street"
            }
         ]
      },
      {
         "name":"Jack",
         "age":35,
         "documents":[
            {
               "Type":"Passport",
               "value":"789",
               "personId":30
            },
            {
               "Address":"Riverside Drive"
            }
         ]
      }
   ]
}


Jolt Spec:

Bloco de código
[
   {
      "operation":"shift",
      "spec":{
         "PersonalData":{
            "*":{
               "name":"PersonalData[&1].name",
               "age":"PersonalData[&1].age",
               "documents":{
                  "*":{
                     "@value":"PersonalData[&3].@Type",
                     "@Address":"PersonalData[&3].AddressDestiny"
                  }
               }
            }
         }
      }
   }
]


  • Veja que obtemos os valores do campo @ +fildName="@Value" e o valor do campo "@Type", para isso usamos o "@";
  • No primeiro elemento da lista Documentos o resultado é "Tipo": "Passaporte" e "valor": "123" e a saída é ("Passaporte": "123".


Saída:

Bloco de código
{
   "PersonalData":[
      {
         "name":"John",
         "age":25,
         "Passport":"123",
         "AddressDestiny":"Washington Street"
      },
      {
         "name":"Jane",
         "age":30,
         "Passport":"456",
         "AddressDestiny":"Washington Street"
      },
      {
         "name":"Jack",
         "age":35,
         "Passport":"789",
         "AddressDestiny":"Riverside Drive"
      }
   ]
}


...

Deck of Cards
historyfalse
idsamples
Card
id1
labelDividir e modificar default-beta
  • Se precisarmos separar uma string que seja um endereço, por exemplo, usamos a função Split.


Entrada JSON:

Bloco de código
{
   "PersonalData":[
      {
         "name":"John",
         "age":25,
         "Passport":"123",
         "AddressDestiny":"1600 Pennsylvania, Washington, DC20500, EUA"
      },
      {
         "name":"Jane",
         "age":30,
         "Passport":"456",
         "AddressDestiny":"1400 Defense Blvd, Washington, VA20301, EUA"
      }
   ]
}


Jolt Spec:

Bloco de código
[
   {
      "operation":"modify-default-beta",
      "spec":{
         "PersonalData":{
            "*":{
               "AddressDestinyList":"=split(',',@(1,AddressDestiny))"
            }
         }
      }
   },
   {
      "operation":"shift",
      "spec":{
         "PersonalData":{
            "*":{
               "name":"PersonalData[&1].name",
               "age":"PersonalData[&1].age",
               "Passport":"PersonalData[&1].Passport",
               "AddressDestiny":"PersonalData[&1].AddressDestiny",
               "AddressDestinyList":"PersonalData[&1].AddressDestinyList"
            }
         }
      }
   }
]


  • No primeiro argumento definimos os caracteres que representam a separação entre as palavras, no caso o ',' (vírgula entre aspas simples) ("=split(',',@(1,AddressDestiny))")
  • A especificação da operação "modify-default-beta" é composta por um objeto JSON que contém uma ou mais propriedades. Cada propriedade pode ser existente no objeto de dados ou uma nova propriedade que deve ser criada;
  • Se a propriedade especificada já existir no objeto de dados, a operação "modify-default-beta" substitui o valor da propriedade com o valor especificado. Se a propriedade especificada não existir no objeto de dados, a operação "modify-default-beta" cria uma nova propriedade com o valor especificado.


Saída:

Bloco de código
{
   "PersonalData":[
      {
         "name":"John",
         "age":25,
         "Passport":"123",
         "AddressDestiny":"1600Pennsylvania, Washington, DC20500, EUA",
         "AddressDestinyList":[
            "1600 Pennsylvania",
            " Washington",
            " DC20500",
            " EUA"
         ]
      },
      {
         "name":"Jane",
         "age":30,
         "Passport":"456",
         "AddressDestiny":"1400 Defense Blvd, Washington, VA20301, EUA",
         "AddressDestinyList":[
            "1400 Defense Blvd",
            " Washington",
            " VA20301",
            " EUA"
         ]
      }
   ]
}


...

Deck of Cards
historyfalse
idsample
Card
id1
labelPrimeiro elemento
  • Para obter o primeiro elemento da lista que criamos com o split veja abaixo.


Entrada JSON:

Bloco de código
{
   "PersonalData":[
      {
         "name":"John",
         "age":25,
         "Passport":"123",
         "AddressDestiny":"1600Pennsylvania, Washington, DC20500, EUA",
         "AddressDestinyList":[
            "1600 Pennsylvania",
            " Washington",
            " DC20500",
            " EUA"
         ]
      },
      {
         "name":"Jane",
         "age":30,
         "Passport":"456",
         "AddressDestiny":"1400 Defense Blvd, Washington, VA20301, EUA",
         "AddressDestinyList":[
            "1400 Defense Blvd",
            " Washington",
            " VA20301",
            " EUA"
         ]
      }
   ]
}


Jolt Spec:

Bloco de código
{
   "PersonalData":[
      {
         "name":"John",
         "age":25,
         "Passport":"123",
         "AddressDestiny":"1600 Pennsylvania, Washington, DC20500, EUA"
      },
      {
         "name":"Jane",
         "age":30,
         "Passport":"456",
         "AddressDestiny":"1400 Defense Blvd, Washington, VA20301, EUA"
      }
   ]
}


  • Para obter o primeiro elemento da lista criada em divisão usamos o método firstElement;
  • Criamos a rua variável;
  • var ="=firstElement(@(1,ParameterList))"


Saída:

Bloco de código
[
   {
      "operation":"modify-default-beta",
      "spec":{
         "PersonalData":{
            "*":{
               "AddressDestinyList":"=split(',',@(1,AddressDestiny))",
               "Street":"=firstElement(@(1,AddressDestinyList))"
            }
         }
      }
   },
   {
      "operation":"shift",
      "spec":{
         "PersonalData":{
            "*":{
               "name":"PersonalData[&1].name",
               "age":"PersonalData[&1].age",
               "Passport":"PersonalData[&1].Passport",
               "AddressDestiny":"PersonalData[&1].AddressDestiny",
               "AddressDestinyList":"PersonalData[&1].AddressDestinyList",
               "Street":"PersonalData[&1].Street"
            }
         }
      }
   }
]


...

Deck of Cards
historyfalse
idsample
Card
id1
labelÚltimo elemento
  • Para obter o último elemento da lista que criamos com o split veja abaixo.


Entrada JSON:

Bloco de código
{
   "PersonalData":[
      {
         "name":"John",
         "age":25,
         "Passport":"123",
         "AddressDestiny":"1600 Pennsylvania, Washington, DC20500, EUA",
         "AddressDestinyList":[
            "1600 Pennsylvania",
            " Washington",
            " DC20500",
            " EUA"
         ],
         "Street":"1600 Pennsylvania"
      },
      {
         "name":"Jane",
         "age":30,
         "Passport":"456",
         "AddressDestiny":"1400 Defense Blvd, Washington, VA20301, EUA",
         "AddressDestinyList":[
            "1400Defense Blvd",
            " Washington",
            " VA20301",
            " EUA"
         ],
         "Street":"1400 Defense Blvd"
      }
   ]
}


Jolt Spec:

Bloco de código
{
   "PersonalData":[
      {
         "name":"John",
         "age":25,
         "Passport":"123",
         "AddressDestiny":"1600 Pennsylvania, Washington, DC 20500, EUA"
      },
      {
         "name":"Jane",
         "age":30,
         "Passport":"456",
         "AddressDestiny":"1400 Defense Blvd, Washington, VA 20301, EUA"
      }
   ]
}


  • Para obter o último elemento da lista usamos o método lastElement criamos a variável País. 
Bloco de código
"var" = "=lastElement(@(1,ParameterList))"


Saída:

Bloco de código
[
   {
      "operation":"modify-default-beta",
      "spec":{
         "PersonalData":{
            "*":{
               "AddressDestinyList":"=split(',',@(1,AddressDestiny))",
               "Country":"=lastElement(@(1,AddressDestinyList))"
            }
         }
      }
   },
   {
      "operation":"shift",
      "spec":{
         "PersonalData":{
            "*":{
               "name":"PersonalData[&1].name",
               "age":"PersonalData[&1].age",
               "Passport":"PersonalData[&1].Passport",
               "AddressDestiny":"PersonalData[&1].AddressDestiny",
               "AddressDestinyList":"PersonalData[&1].AddressDestinyList",
               "Country":"PersonalData[&1].Country"
            }
         }
      }
   }
]


...

Deck of Cards
historyfalse
idsample
Card
id1
labelSegundo elemento
  • Para obter o segundo elemento da lista veja abaixo.


Entrada JSON:

Bloco de código
{
   "PersonalData":[
      {
         "name":"John",
         "age":25,
         "Passport":"123",
         "AddressDestiny":"1600 Pennsylvania, Washington, DC20500, EUA",
         "AddressDestinyList":[
            "1600 Pennsylvania",
            " Washington",
            " DC20500",
            " EUA"
         ],
         "Country":" EUA"
      },
      {
         "name":"Jane",
         "age":30,
         "Passport":"456",
         "AddressDestiny":"1400 Defense Blvd, Washington, VA20301, EUA",
         "AddressDestinyList":[
            "1400 Defense Blvd",
            " Washington",
            " VA20301",
            " EUA"
         ],
         "Country":" EUA"
      }
   ]
}


Jolt Spec:

Bloco de código
{
   "PersonalData":[
      {
         "name":"John",
         "age":25,
         "Passport":"123",
         "AddressDestiny":"1600 Pennsylvania, Washington, DC20500, EUA"
      },
      {
         "name":"Jane",
         "age":30,
         "Passport":"456",
         "AddressDestiny":"1400 Defense Blvd, Washington, VA20301, EUA"
      }
   ]
}


  • Para obter a capital do endereço que é o segundo elemento usamos o método metod elementAt onde definimos a posição do índice. 
Bloco de código
"var": "=elementAt(indexPositionHere,@(,ParameterList))"


Saída:

Bloco de código
[
   {
      "operation":"modify-default-beta",
      "spec":{
         "PersonalData":{
            "*":{
               "AddressDestinyList":"=split(',',@(1,AddressDestiny))",
               "Capital":"=elementAt(1,@(1,AddressDestinyList))"
            }
         }
      }
   },
   {
      "operation":"shift",
      "spec":{
         "PersonalData":{
            "*":{
               "name":"PersonalData[&1].name",
               "age":"PersonalData[&1].age",
               "Passport":"PersonalData[&1].Passport",
               "AddressDestiny":"PersonalData[&1].AddressDestiny",
               "AddressDestinyList":"PersonalData[&1].AddressDestinyList",
               "Capital":"PersonalData[&1].Capital"
            }
         }
      }
   }
]


...

Deck of Cards
historyfalse
idsample
Card
id1
labelTodos os elementos
  • Para obter todos os elementos um por um veja abaixo.


Entrada JSON:

Bloco de código
{
   "PersonalData":[
      {
         "name":"John",
         "age":25,
         "Passport":"123",
         "AddressDestiny":"1600 Pennsylvania, Washington, DC20500, EUA",
         "AddressDestinyList":[
            "1600 Pennsylvania",
            " Washington",
            " DC20500",
            " EUA"
         ],
         "Capital":" Washington"
      },
      {
         "name":"Jane",
         "age":30,
         "Passport":"456",
         "AddressDestiny":"1400 Defense Blvd, Washington, VA20301, EUA",
         "AddressDestinyList":[
            "1400 Defense Blvd",
            " Washington",
            " VA20301",
            " EUA"
         ],
         "Capital":" Washington"
      }
   ]
}


Json Spec:

Bloco de código
{
   "PersonalData":[
      {
         "name":"John",
         "age":25,
         "Passport":"123",
         "AddressDestiny":"1600 Pennsylvania, Washington, DC20500, EUA"
      },
      {
         "name":"Jane",
         "age":30,
         "Passport":"456",
         "AddressDestiny":"1400 Defense Blvd, Washington, VA20301, EUA"
      }
   ]
}


Saída:

Bloco de código
[
   {
      "operation":"modify-default-beta",
      "spec":{
         "PersonalData":{
            "*":{
               "AddressDestinyList":"=split(',',@(1,AddressDestiny))",
               "Street":"=elementAt(0,@(1,AddressDestinyList))",
               "Capital":"=elementAt(1,@(1,AddressDestinyList))",
               "ZipCode":"=elementAt(2,@(1,AddressDestinyList))",
               "Country":"=elementAt(3,@(1,AddressDestinyList))"
            }
         }
      }
   },
   {
      "operation":"shift",
      "spec":{
         "PersonalData":{
            "*":{
               "name":"PersonalData[&1].name",
               "age":"PersonalData[&1].age",
               "Passport":"PersonalData[&1].Passport",
               "AddressDestiny":"PersonalData[&1].AddressDestiny",
               "AddressDestinyList":"PersonalData[&1].AddressDestinyList",
               "Street":"PersonalData[&1].Street",
               "Capital":"PersonalData[&1].Capital",
               "ZipCode":"PersonalData[&1].ZipCode",
               "Country":"PersonalData[&1].Country"
            }
         }
      }
   }
]


...

Deck of Cards
historyfalse
idsample
Card
id1
labelUnir elementos
  • Após dividr uma string, existe um método que pode unir todos os elementos da lista.


Entrada JSON:

Bloco de código
{
   "PersonalData":[
      {
         "name":"John",
         "age":25,
         "Passport":"123",
         "AddressDestiny":"1600 Pennsylvania, Washington, DC20500, EUA",
         "AddressDestinyList":[
            "1600 Pennsylvania",
            " Washington",
            " DC20500",
            " EUA"
         ],
         "Street":"1600 Pennsylvania",
         "Capital":" Washington",
         "ZipCode":" DC20500",
         "Country":" EUA"
      },
      {
         "name":"Jane",
         "age":30,
         "Passport":"456",
         "AddressDestiny":"1400 Defense Blvd, Washington, VA20301, EUA",
         "AddressDestinyList":[
            "1400 Defense Blvd",
            " Washington",
            " VA20301",
            " EUA"
         ],
         "Street":"1400 Defense Blvd",
         "Capital":" Washington",
         "ZipCode":" VA20301",
         "Country":" EUA"
      }
   ]
}


Jolt Spec

Bloco de código
{
   "PersonalData":[
      {
         "name":"John",
         "age":25,
         "Passport":"123",
         "AddressDestiny":"1600 Pennsylvania, Washington, DC20500, EUA"
      },
      {
         "name":"Jane",
         "age":30,
         "Passport":"456",
         "AddressDestiny":"1400 Defense Blvd, Washington, VA20301, EUA"
      }
   ]
}


  • Com o método Join podemos juntar as palavras com o caractere que queremos;
  • O caractere definido é |(pipe);
Bloco de código
"var": "=join('parameterCaracterHere',@(,parameterList))"


Saída:

Bloco de código
[
   {
      "operation":"modify-default-beta",
      "spec":{
         "PersonalData":{
            "*":{
               "AddressDestinyList":"=split(', ',@(1,AddressDestiny))",
               "AddressJoin":"=join(' | ',@(1,AddressDestinyList))"
            }
         }
      }
   },
   {
      "operation":"shift",
      "spec":{
         "PersonalData":{
            "*":{
               "name":"PersonalData[&1].name",
               "age":"PersonalData[&1].age",
               "Passport":"PersonalData[&1].Passport",
               "AddressDestiny":"PersonalData[&1].AddressDestiny",
               "AddressDestinyList":"PersonalData[&1].AddressDestinyList",
               "AddressJoin":"PersonalData[&1].AddressJoin"
            }
         }
      }
   }
]


...

Deck of Cards
historyfalse
idsample
Card
id1
labelDividir e como remover /r/n

Entrada JSON:

Bloco de código
{
   "PersonalData":[
      {
         "name":"John",
         "age":25,
         "Passport":"123",
         "AddressDestiny":"1600 Pennsylvania, Washington, DC20500, EUA",
         "AddressDestinyList":[
            "1600 Pennsylvania",
            "Washington",
            "DC20500",
            "EUA"
         ],
         "AddressJoin":"1600 Pennsylvania | Washington | DC20500| EUA"
      },
      {
         "name":"Jane",
         "age":30,
         "Passport":"456",
         "AddressDestiny":"1400 Defense Blvd, Washington, VA20301, EUA",
         "AddressDestinyList":[
            "1400 Defense Blvd",
            "Washington",
            "VA20301",
            "EUA"
         ],
         "AddressJoin":"1400 Defense Blvd | Washington | VA20301| EUA"
      }
   ]
}


Jolt Spec:

Bloco de código
{
   "PersonalData":[
      {
         "name":"John",
         "age":25,
         "Passport":"123",
         "AddressDestiny":"1600 Pennsylvania\r\nWashington\r\nDC20500\r\nEUA"
      },
      {
         "name":"Jane",
         "age":30,
         "Passport":"456",
         "AddressDestiny":"1400 Defense Blvd\r\nWashington\r\nVA20301\r\nEUA"
      }
   ]
}


  • Digamos que o endereço esteja separado por /r/n;
  • Usamos split para separar as palavras com o caracter [\r\n];
  • Observe que neste exemplo usamos o caracter [(colchetes);
  • Usamos colchetes antes e depois do caractere /r/n e juntando palavras com o caracter spacewhite "". 


Saída:

Bloco de código
[
   {
      "operation":"modify-default-beta",
      "spec":{
         "PersonalData":{
            "*":{
               "AddressDestinyList":"=split('[\r\n]',@(1,AddressDestiny))",
               "AddressJoin":"=join(' ',@(1,AddressDestinyList))"
            }
         }
      }
   },
   {
      "operation":"shift",
      "spec":{
         "PersonalData":{
            "*":{
               "name":"PersonalData[&1].name",
               "age":"PersonalData[&1].age",
               "Passport":"PersonalData[&1].Passport",
               "AddressDestiny":"PersonalData[&1].AddressDestiny",
               "AddressDestinyList":"PersonalData[&1].AddressDestinyList",
               "AddressJoin":"PersonalData[&1].AddressJoin"
            }
         }
      }
   }
]


...

Deck of Cards
historyfalse
idsample
Card
id1
labelRemover aspas duplas

Entrada JSON:

Bloco de código
{
   "PersonalData":[
      {
         "name":"John",
         "age":25,
         "Passport":"123",
         "AddressDestiny":"1600 Pennsylvania\r\nWashington\r\nDC20500\r\nEUA",
         "AddressDestinyList":[
            "1600 Pennsylvania",
            "",
            "Washington",
            "",
            "DC20500",
            "",
            "EUA"
         ],
         "AddressJoin":"1600 Pennsylvania Washington DC20500 EUA"
      },
      {
         "name":"Jane",
         "age":30,
         "Passport":"456",
         "AddressDestiny":"1400 Defense Blvd\r\nWashington\r\nVA20301\r\nEUA",
         "AddressDestinyList":[
            "1400 Defense Blvd",
            "",
            "Washington",
            "",
            "VA20301",
            "",
            "EUA"
         ],
         "AddressJoin":"1400 Defense Blvd Washington VA20301EUA"
      }
   ]
}


Jolt Spec:

Bloco de código
[
   {
      "operation":"modify-default-beta",
      "spec":{
         "PersonalData":{
            "*":{
               "AddressDestinyList":"=split('\"',@(1,AddressDestiny))",
               "AddressJoin":"=join(' ',@(1,AddressDestinyList))"
            }
         }
      }
   },
   {
      "operation":"shift",
      "spec":{
         "PersonalData":{
            "*":{
               "name":"PersonalData[&1].name",
               "age":"PersonalData[&1].age",
               "Passport":"PersonalData[&1].Passport",
               "AddressDestiny":"PersonalData[&1].AddressDestiny",
               "AddressDestinyList":"PersonalData[&1].AddressDestinyList",
               "AddressJoin":"PersonalData[&1].AddressJoin"
            }
         }
      }
   }
]


Saída:

Bloco de código
{
   "PersonalData":[
      {
         "name":"John",
         "age":25,
         "Passport":"123",
         "AddressDestiny":"1600 Pennsylvania\"Washington\"DC20500\"nEUA",
         "AddressDestinyList":[
            "1600 Pennsylvania",
            "Washington",
            "DC20500",
            "nEUA"
         ],
         "AddressJoin":"1600 Pennsylvania Washington DC20500 nEUA"
      },
      {
         "name":"Jane",
         "age":30,
         "Passport":"456",
         "AddressDestiny":"1400 Defense Blvd\"Washington\"VA20301\"EUA",
         "AddressDestinyList":[
            "1400 Defense Blvd",
            "Washington",
            "VA20301",
            "EUA"
         ],
         "AddressJoin":"1400 Defense Blvd Washington VA20301EUA"
      }
   ]
}


...

Deck of Cards
historyfalse
idsample
Card
id1
labelRemover cotação

Entrada JSON:

Bloco de código
{
   "PersonalData":[
      {
         "name":"John",
         "age":25,
         "Passport":"123",
         "AddressDestiny":"1600 Pennsylvania'Washington'DC20500'nEUA"
      },
      {
         "name":"Jane",
         "age":30,
         "Passport":"456",
         "AddressDestiny":"1400 Defense Blvd'Washington'VA20301'EUA"
      }
   ]
}


Jolt Spec:

Bloco de código
[
   {
      "operation":"modify-default-beta",
      "spec":{
         "PersonalData":{
            "*":{
               "AddressDestinyList":"=split('['']',@(1,AddressDestiny))",
               "AddressJoin":"=join(' ',@(1,AddressDestinyList))"
            }
         }
      }
   },
   {
      "operation":"shift",
      "spec":{
         "PersonalData":{
            "*":{
               "name":"PersonalData[&1].name",
               "age":"PersonalData[&1].age",
               "Passport":"PersonalData[&1].Passport",
               "AddressDestiny":"PersonalData[&1].AddressDestiny",
               "AddressDestinyList":"PersonalData[&1].AddressDestinyList",
               "AddressJoin":"PersonalData[&1].AddressJoin"
            }
         }
      }
   }
]


Saída:

Bloco de código
{
   "PersonalData":[
      {
         "name":"John",
         "age":25,
         "Passport":"123",
         "AddressDestiny":"1600 Pennsylvania'Washington'DC20500'nEUA",
         "AddressDestinyList":[
            "1600 Pennsylvania",
            "Washington",
            "DC20500",
            "nEUA"
         ],
         "AddressJoin":"1600 Pennsylvania Washington DC20500nEUA"
      },
      {
         "name":"Jane",
         "age":30,
         "Passport":"456",
         "AddressDestiny":"1400 Defense Blvd'Washington'VA20301'EUA",
         "AddressDestinyList":[
            "1400 Defense Blvd",
            "Washington",
            "VA20301",
            "EUA"
         ],
         "AddressJoin":"1400 Defense Blvd Washington VA20301EUA"
      }
   ]
}


...

Deck of Cards
historyfalse
idsample
Card
id1
labelRemover barra invertida

Entrada JSON:

Bloco de código
{
   "PersonalData":[
      {
         "name":"John",
         "age":25,
         "Passport":"123",
         "AddressDestiny":"1600 Pennsylvania Washington DC20500 EUA",
         "email":"[email protected]\\"
      },
      {
         "name":"Jane",
         "age":30,
         "Passport":"456",
         "AddressDestiny":"1400 Defense Blvd Washington VA20301 EUA",
         "email":"[email protected]\\"
      }
   ]
}


Jolt Spec:

Bloco de código
[
   {
      "operation":"modify-default-beta",
      "spec":{
         "PersonalData":{
            "*":{
               "emailList":"=split('\\\\',@(1,email))",
               "emailFirstElement":"=firstElement(@(1,emailList))",
               "emailJoin":"=join('',@(1,emailList))"
            }
         }
      }
   },
   {
      "operation":"shift",
      "spec":{
         "PersonalData":{
            "*":{
               "name":"PersonalData[&1].name",
               "age":"PersonalData[&1].age",
               "Passport":"PersonalData[&1].passport",
               "AddressDestiny":"PersonalData[&1].addressDestiny",
               "emailList":"PersonalData[&1].emailList",
               "emailJoin":"PersonalData[&1].email",
               "emailFirstElement":"PersonalData[&1].emailFirstElement"
            }
         }
      }
   }
]


  • Usamos duas maneiras de obter o valor do campo e-mail;
  • Onewith join -"emailJoin":"=join('',@(1,emailList))" 
  • Dois com fisrtElement-"emailFirstElement":"=firstElement(@(1,emailList))" 
  • Como a lista criada possui um elemento, sabemos que no e-mail não há palavra após \(barra invertida). Então a lista tem um elemento.
  • Você pode escolher qual dos métodos utilizar.


Saída:

Bloco de código
{
   "PersonalData":[
      {
         "name":"John",
         "age":25,
         "passport":"123",
         "addressDestiny":"1600 Pennsylvania Washington DC20500EUA",
         "emailList":[
            "[email protected]"
         ],
         "email":"[email protected]",
         "emailFirstElement":"[email protected]"
      },
      {
         "name":"Jane",
         "age":30,
         "passport":"456",
         "addressDestiny":"1400 Defense Blvd Washington VA20301 EUA",
         "emailList":[
            "[email protected]"
         ],
         "email":"[email protected]",
         "emailFirstElement":"[email protected]"
      }
   ]
}


...

Deck of Cards
historyfalse
idsample
Card
id1
labelRemover barra /

Entrada JSON:

Bloco de código
{
   "PersonalData":[
      {
         "name":"John",
         "age":25,
         "Passport":"123",
         "AddressDestiny":"1600 Pennsylvania Washington DC20500 EUA",
         "email":"[email protected]//"
      },
      {
         "name":"Jane",
         "age":30,
         "Passport":"456",
         "AddressDestiny":"1400 Defense Blvd Washington VA20301 EUA",
         "email":"[email protected]//"
      }
   ]
}


Jolt Spec:

Bloco de código
{
   "PersonalData":[
      {
         "name":"John",
         "age":25,
         "Passport":"123",
         "AddressDestiny":"1600 Pennsylvania Washington DC20500 EUA",
         "email":"[email protected]//"
      },
      {
         "name":"Jane",
         "age":30,
         "Passport":"456",
         "AddressDestiny":"1400 Defense Blvd Washington VA20301 EUA",
         "email":"[email protected]//"
      }
   ]
}


  • Usamos duas maneiras de obter o valor do campo e-mail;
  • Onewith join -"emailJoin":"=join('',@(1,emailList))" 
  • Dois com fisrtElement-"emailFirstElement":"=firstElement(@(1,emailList))" 
  • Como a lista criada possui um elemento sabemos que no e-mail não há palavra após /(barra);
  • Então a lista tem um elemento;
  • Você pode escolher qual dos métodos utilizar.


Saída:

Bloco de código
{
   "PersonalData":[
      {
         "name":"John",
         "age":25,
         "passport":"123",
         "addressDestiny":"1600 Pennsylvania Washington DC20500 EUA",
         "emailList":[
            "[email protected]"
         ],
         "email":"[email protected]",
         "emailFirstElement":"[email protected]"
      },
      {
         "name":"Jane",
         "age":30,
         "passport":"456",
         "addressDestiny":"1400 Defense Blvd Washington VA20301 EUA",
         "emailList":[
            "[email protected]"
         ],
         "email":"[email protected]",
         "emailFirstElement":"[email protected]"
      }
   ]
}


...

Deck of Cards
historyfalse
idsample
Card
id1
labelDividir

Entrada JSON:

Bloco de código
{
   "PersonalData":[
      {
         "name":"John",
         "age":25,
         "Passport":"123",
         "AddressDestiny":"1600 Pennsylvania Washington DC20500 EUA",
         "email":"[email protected]",
         "weight":180
      },
      {
         "name":"Jane",
         "age":30,
         "Passport":"456",
         "AddressDestiny":"1400 Defense Blvd Washington VA20301 EUA",
         "email":"[email protected]",
         "weight":120
      }
   ]
}


Jolt Spec:

Bloco de código
[
   {
      "operation":"modify-default-beta",
      "spec":{
         "PersonalData":{
            "*":{
               "weightConverted":"=divide(@(1,weight),2.205)"
            }
         }
      }
   },
   {
      "operation":"shift",
      "spec":{
         "PersonalData":{
            "*":{
               "name":"PersonalData[&1].name",
               "age":"PersonalData[&1].age",
               "Passport":"PersonalData[&1].passport",
               "AddressDestiny":"PersonalData[&1].addressDestiny",
               "weightConverted":"PersonalData[&1].kilogram"
            }
         }
      }
   }
]


  • O cálculo matemático que está sendo realizado é a divisão. A fórmula =divide(@(,weight),.) divide o valor da propriedade peso por 2,205;
  • A parte 2,205 da fórmula é o fator de conversão entre libras e quilogramas. Um quilograma equivale a aproximadamente 2.205 libras.


Saída:

Bloco de código
{
   "PersonalData":[
      {
         "name":"John",
         "age":25,
         "passport":"123",
         "addressDestiny":"1600 Pennsylvania Washington DC20500 EUA",
         "kilogram":81.63265306122449
      },
      {
         "name":"Jane",
         "age":30,
         "passport":"456",
         "addressDestiny":"1400 Defense Blvd Washington VA20301 EUA",
         "kilogram":54.42176870748299
      }
   ]
}


...

Deck of Cards
historyfalse
idsample
Card
id1
labelPara inserir na modificação beta padrão

Entrada JSON:

Bloco de código
{
   "PersonalData":[
      {
         "name":"John",
         "age":25,
         "Passport":"123",
         "AddressDestiny":"1600 Pennsylvania Washington DC20500 EUA",
         "email":"[email protected]",
         "weight":180
      },
      {
         "name":"Jane",
         "age":30,
         "Passport":"456",
         "AddressDestiny":"1400 Defense Blvd Washington VA20301 EUA",
         "email":"[email protected]",
         "weight":120
      }
   ]
}


Jolt Spec:

Bloco de código
[
   {
      "operation":"modify-default-beta",
      "spec":{
         "PersonalData":{
            "*":{
               "weightConverted":"=divide(@(1,weight),2.205)",
               "weightInt":"=toInteger(@(1,weightConverted))"
            }
         }
      }
   },
   {
      "operation":"shift",
      "spec":{
         "PersonalData":{
            "*":{
               "name":"PersonalData[&1].name",
               "age":"PersonalData[&1].age",
               "Passport":"PersonalData[&1].passport",
               "AddressDestiny":"PersonalData[&1].addressDestiny",
               "weight":"PersonalData[&1].weightOrigin",
               "weightConverted":"PersonalData[&1].weightConverted",
               "weightInt":"PersonalData[&1].kilogram"
            }
         }
      }
   }
]


  • Temos três campos na saída;
  • Peso único com o valor original 180lb;
  • Dois -weightConvertido com o resultado da conversão de lb para quilograma;
  • Três -weightInt com o resultado da conversão de lb para quilograma e inteiro convertido. 


Saída:

Bloco de código
{
   "PersonalData":[
      {
         "name":"John",
         "age":25,
         "passport":"123",
         "addressDestiny":"1600 Pennsylvania Washington DC20500 EUA",
         "weightOrigin":180,
         "weightConverted":81.63265306122449,
         "kilogram":81
      },
      {
         "name":"Jane",
         "age":30,
         "passport":"456",
         "addressDestiny":"1400 Defense Blvd Washington VA20301 EUA",
         "weightOrigin":120,
         "weightConverted":54.42176870748299,
         "kilogram":54
      }
   ]
}


...

Deck of Cards
historyfalse
idsample
Card
id1
labelTratamento nulo

Entrada JSON:

Bloco de código
{
   "PersonalData":[
      {
         "name":"John",
         "age":25,
         "Passport":"123",
         "AddressDestiny":"1600 Pennsylvania Washington DC20500 EUA",
         "email":"[email protected]",
         "weight":180
      },
      {
         "name":"Jane",
         "age":30,
         "Passport":"456",
         "AddressDestiny":"1400 Defense Blvd Washington VA20301 EUA",
         "email":"[email protected]",
         "weight":null
      }
   ]
}


Jolt Spec:

Bloco de código
[
   {
      "operation":"modify-default-beta",
      "spec":{
         "PersonalData":{
            "*":{
               "weightConverted":"=divide(@(1,weight),2.205)"
            }
         }
      }
   },
   {
      "operation":"shift",
      "spec":{
         "PersonalData":{
            "*":{
               "name":"PersonalData[&1].name",
               "age":"PersonalData[&1].age",
               "Passport":"PersonalData[&1].passport",
               "AddressDestiny":"PersonalData[&1].addressDestiny",
               "weight":"PersonalData[&1].weightOrigin",
               "weightConverted":"PersonalData[&1].kiloGram"
            }
         }
      }
   },
   {
      "operation":"modify-overwrite-beta",
      "spec":{
         "PersonalData":{
            "*":{
               "kiloGram":[
                  "=toInteger",
                  0
               ]
            }
         }
      }
   }
]


  • Na operação modificar-overwrite-beta podemos definir a conversão para toInteger "kiloGram": ["=toInteger", 0];
  • E podemos definir um valor padrão "quiloGram": ["=toInteger", parâmetroDefaultValueHere] se o valor do campo quiloGram for nulo o valor 0 é definido, veja no elemento Jane campo quiloGram. 


Saída:

Bloco de código
{
   "PersonalData":[
      {
         "name":"John",
         "age":25,
         "passport":"123",
         "addressDestiny":"1600 Pennsylvania Washington DC20500 EUA",
         "weightOrigin":180,
         "kiloGram":81
      },
      {
         "name":"Jane",
         "age":30,
         "passport":"456",
         "addressDestiny":"1400 Defense Blvd Washington VA20301 EUA",
         "weightOrigin":null,
         "kiloGram":0
      }
   ]
}


...

Deck of Cards
historyfalse
idsample
Card
id1
labelModificar e substituir beta

Entrada JSON:

Bloco de código
{
   "PersonalData":[
      {
         "name":"John",
         "age":25,
         "Passport":"123",
         "AddressDestiny":"1600 Pennsylvania Washington DC20500 EUA",
         "email":"[email protected]",
         "weight":180
      },
      {
         "name":"Jane",
         "age":30,
         "Passport":"456",
         "AddressDestiny":"1400 Defense Blvd Washington VA20301 EUA",
         "email":"[email protected]",
         "weight":null
      }
   ]
}


Jolt Spec:

Bloco de código
[
   {
      "operation":"modify-default-beta",
      "spec":{
         "PersonalData":{
            "*":{
               "weightConverted":"=divide(@(1,weight),2.205)"
            }
         }
      }
   },
   {
      "operation":"shift",
      "spec":{
         "PersonalData":{
            "*":{
               "name":"PersonalData[&1].name",
               "age":"PersonalData[&1].age",
               "Passport":"PersonalData[&1].passport",
               "AddressDestiny":"PersonalData[&1].addressDestiny",
               "weight":"PersonalData[&1].weightOrigin",
               "weightConverted":"PersonalData[&1].kiloGram"
            }
         }
      }
   },
   {
      "operation":"modify-overwrite-beta",
      "spec":{
         "PersonalData":{
            "*":{
               "kiloGram":[
                  "=toString",
                  "0"
               ]
            }
         }
      }
   }
]


  • Na operação modificar-overwrite-beta podemos definir a conversão para toString "kiloGram": ["=toString", "0"]
  • E podemos definir um valor padrão "quiloGram": ["=toString", parâmetroDefaultValueHere]se o valor do campo quiloGram for nulo o valor "0" é definido, veja no elemento Jane campo quiloGram.


Saída:

Bloco de código
{
   "PersonalData":[
      {
         "name":"John",
         "age":25,
         "passport":"123",
         "addressDestiny":"1600 Pennsylvania Washington DC20500 EUA",
         "weightOrigin":180,
         "kiloGram":"81.63265306122449"
      },
      {
         "name":"Jane",
         "age":30,
         "passport":"456",
         "addressDestiny":"1600 Defense Blvd Washington VA20301 EUA",
         "weightOrigin":null,
         "kiloGram":"0"
      }
   ]
}


...

Deck of Cards
historyfalse
idsample
Card
id1
labelSoma dupla
  • Quando precisamos adicionar dois campos decimais usamos o doubleSum.


Entrada JSON:

Bloco de código
{
   "PersonalData":[
      {
         "name":"John",
         "age":25,
         "Passport":"123",
         "AddressDestiny":"1600 Pennsylvania Washington DC 20500 EUA",
         "email":"[email protected]",
         "weight1":90,
         "weight2":90
      },
      {
         "name":"Jane",
         "age":30,
         "Passport":"456",
         "AddressDestiny":"1400 Defense Blvd Washington VA 20301 EUA",
         "email":"[email protected]",
         "weight1":60,
         "weight2":null
      }
   ]
}


Jolt Spec:

Bloco de código
[
   {
      "operation":"modify-default-beta",
      "spec":{
         "PersonalData":{
            "*":{
               "weight":"=doubleSum(@(1,weight1),@(1,weight2))"
            }
         }
      }
   },
   {
      "operation":"shift",
      "spec":{
         "PersonalData":{
            "*":{
               "name":"PersonalData[&1].name",
               "age":"PersonalData[&1].age",
               "Passport":"PersonalData[&1].passport",
               "AddressDestiny":"PersonalData[&1].addressDestiny",
               "weight":"PersonalData[&1].weight"
            }
         }
      }
   }
]


  • Se um dos valores for nulo, o parâmetro do método será 0, veja no elemento Jane.


Saída:

Bloco de código
{
   "PersonalData":[
      {
         "name":"John",
         "age":25,
         "passport":"123",
         "addressDestiny":"1600 Pennsylvania Washington DC20500 EUA",
         "weight":180.0
      },
      {
         "name":"Jane",
         "age":30,
         "passport":"456",
         "addressDestiny":"1400 Defense Blvd Washington VA20301 EUA",
         "weight":60.0
      }
   ]
}


...

Deck of Cards
historyfalse
idsample
Card
id1
labelTamanho

Entrada JSON:

Bloco de código
{
   "PersonalData":[
      {
         "name":"John",
         "age":25,
         "Passport":"123",
         "AddressDestiny":"1600 Pennsylvania Washington DC20500 EUA",
         "email":"[email protected]",
         "weight":90
      },
      {
         "name":"Jane",
         "age":30,
         "Passport":"456",
         "AddressDestiny":"1400 Defense Blvd Washington VA20301 EUA",
         "email":"[email protected]",
         "weight":60
      }
   ]
}


Jolt Spec:

Bloco de código
[
   {
      "operation":"shift",
      "spec":{
         "PersonalData":{
            "*":{
               "name":"PersonalData[&1].name",
               "age":"PersonalData[&1].age",
               "Passport":"PersonalData[&1].passport",
               "AddressDestiny":"PersonalData[&1].addressDestiny",
               "weight":"PersonalData[&1].weight"
            }
         }
      }
   },
   {
      "operation":"modify-overwrite-beta",
      "spec":{
         "countElements":"=size(@(1,PersonalData))",
         "PersonalData":{
            "*":{
               "countAddress":"=size(@(1,addressDestiny))"
            }
         }
      }
   }
]


  • Digamos que precisamos contar quantos elementos temos na lista PersonalData, então usamos o size;
  • Criamos a variável countElements;
  • Em outro caso, precisamos saber quantas letras uma propriedade de um elemento da lista possui;
  • Criamos a variável countAddress.


Saída:

Bloco de código
{
   "PersonalData":[
      {
         "name":"John",
         "age":25,
         "passport":"123",
         "addressDestiny":"1600 Pennsylvania Washington DC20500 EUA",
         "countAddress":41,
         "weight":90
      },
      {
         "name":"Jane",
         "age":30,
         "passport":"456",
         "addressDestiny":"1400 Defense Blvd Washington VA20301 EUA",
         "weight":60,
         "countAddress":41
      }
   ],
   "countElements":2
}


...

Deck of Cards
historyfalse
idsample
Card
id1
labelDobrar
  • Se precisamos converter um campo do formato string para double para manter as casas decimais, usamos o dobrar.


Entrada JSON:

Bloco de código
{
   "PersonalData":[
      {
         "name":"John",
         "age":25,
         "Passport":"123",
         "AddressDestiny":"1600 Pennsylvania Washington DC20500 EUA",
         "email":"[email protected]",
         "weight":"90.155"
      },
      {
         "name":"Jane",
         "age":30,
         "Passport":"456",
         "AddressDestiny":"1400 Defense Blvd Washington VA20301 EUA",
         "email":"[email protected]",
         "weight":"60.122"
      }
   ]
}


Jolt Spec:

Bloco de código
[
   {
      "operation":"shift",
      "spec":{
         "PersonalData":{
            "*":{
               "name":"PersonalData[&1].name",
               "age":"PersonalData[&1].age",
               "Passport":"PersonalData[&1].passport",
               "AddressDestiny":"PersonalData[&1].addressDestiny",
               "weight":"PersonalData[&1].weight"
            }
         }
      }
   },
   {
      "operation":"modify-overwrite-beta",
      "spec":{
         "PersonalData":{
            "*":{
               "weight":[
                  "=toDouble",
                  0
               ]
            }
         }
      }
   }
]


Saída:

Bloco de código
{
   "PersonalData":[
      {
         "name":"John",
         "age":25,
         "passport":"123",
         "addressDestiny":"1600 Pennsylvania Washington DC20500 EUA",
         "weight":90.155
      },
      {
         "name":"Jane",
         "age":30,
         "passport":"456",
         "addressDestiny":"1400 Defense Blvd Washington VA20301 EUA",
         "weight":60.122
      }
   ]
}


...

Deck of Cards
historyfalse
idsample
Card
id1
labelPadrão
  • Em vários casos precisamos enviar campos obrigatórios para um sistema alvo, por isso utilizamos a operação Default.


Entrada JSON:

Bloco de código
{
   "PersonalData":[
      {
         "name":"John",
         "age":25,
         "Passport":"123",
         "AddressDestiny":"1600 Pennsylvania Washington DC20500 EUA",
         "email":"[email protected]",
         "weight":"90.155",
         "countryOriginList":[
            {
               "addressOrigin":"Street1",
               "countryRegion":"Brazil"
            }
         ]
      },
      {
         "name":"Jane",
         "age":30,
         "Passport":"456",
         "AddressDestiny":"1400 Defense Blvd Washington VA20301 EUA",
         "email":"[email protected]",
         "weight":null
      }
   ]
}


Jolt Spec:

Bloco de código
[
   {
      "operation":"shift",
      "spec":{
         "PersonalData":{
            "*":{
               "name":"PersonalData[&1].name",
               "age":"PersonalData[&1].age",
               "Passport":"PersonalData[&1].passport",
               "AddressDestiny":"PersonalData[&1].addressDestiny",
               "weight":"PersonalData[&1].weight",
               "countryOriginList":"PersonalData[&1].countryOriginList"
            }
         }
      }
   },
   {
      "operation":"default",
      "spec":{
         "PersonalData[]":{
            "*":{
               "surName":"empty",
               "countryOriginList[]":{
                  "0":{
                     "addressOrigin":"empty",
                     "countryRegion":"empty"
                  },
                  "*":{
                     "addressOrigin":"empty",
                     "countryRegion":"empty"
                  }
               }
            }
         }
      }
   }
]


  • Com isso temos os novos campos surName, countryOriginList, countryRegion, addressOrigin, todos definidos com o valor padrão "empy" caso o campo não exista na origem ou possua o valor nulo;
  • Um detalhe importante é que o nome da lista deve conter colchetes para definir os valores da lista de destino “Dados Pessoais[]”;
  • Os valores podem ser int, double, bool, string, null, list;
  • Observe que na lista paísOrigem é definida por padrão se não existir na origem, na elemento Jane é criada com campos vazios e no elemento John mantém os dados de origem porque possui valores;
  • Este procedimento é necessário quando o sistema alvo possui esta lista como obrigatória para integração.


Saída:

Bloco de código
{
   "PersonalData":[
      {
         "name":"John",
         "age":25,
         "passport":"123",
         "addressDestiny":"1600 Pennsylvania Washington DC20500 EUA",
         "weight":"90.155",
         "countryOriginList":[
            {
               "addressOrigin":"Street1",
               "countryRegion":"Brazil"
            }
         ],
         "surName":"empty"
      },
      {
         "name":"Jane",
         "age":30,
         "passport":"456",
         "addressDestiny":"1400 Defense Blvd Washington VA20301 EUA",
         "weight":null,
         "countryOriginList":[
            {
               "countryRegion":"empty",
               "addressOrigin":"empty"
            }
         ],
         "surName":"empty"
      }
   ]
}


...

Deck of Cards
historyfalse
idsample
Card
id1
labelleftPad
  • Quando precisamos completar os caracteres de uma variável com um número específico à esquerda, usamos leftPad. Isso é necessário quando o sistema de destino exige que o campo tenha 10 caracteres, como no exemplo;
  • Neste caso usamos zero, mas outro caractere pode ser usado.


Bloco de código
"var":
"=leftPad(@(,parameterFieldOrigin),parameterLimitOfCaracters,'caracterForComplement')"


Entrada JSON:

Bloco de código
{
   "PersonalData":[
      {
         "name":"John",
         "age":25,
         "Passport":"123",
         "AddressDestiny":"1600 Pennsylvania Washington DC20500 EUA",
         "email":"[email protected]"
      },
      {
         "name":"Jane",
         "age":30,
         "Passport":"456",
         "AddressDestiny":"1400 Defense Blvd Washington VA20301 EUA",
         "email":"[email protected]"
      }
   ]
}


Jolt Spec:

Bloco de código
[
   {
      "operation":"modify-overwrite-beta",
      "spec":{
         "PersonalData":{
            "*":{
               "PassportLeftPad":"=leftPad(@(,Passport),10,'0')"
            }
         }
      }
   },
   {
      "operation":"shift",
      "spec":{
         "PersonalData":{
            "*":{
               "name":"PersonalData[&1].name",
               "age":"PersonalData[&1].age",
               "PassportLeftPad":"PersonalData[&1].passport",
               "AddressDestiny":"PersonalData[&1].addressDestiny",
               "weight":"PersonalData[&1].weight",
               "countryOriginList":"PersonalData[&1].countryOriginList"
            }
         }
      }
   }
]


Saída:

Bloco de código
"PersonalData":[
   {
      "name":"John",
      "age":25,
      "passport":"0000000123",
      "addressDestiny":"1600 Pennsylvania Washington DC20500 EUA"
   },
   {
      "name":"Jane",
      "age":30,
      "passport":"0000000456",
      "addressDestiny":"1400 Defense Blvd Washington VA20301 EUA"
   }
]
}


...

Deck of Cards
historyfalse
idsample
Card
id1
labelrightPad
  • Quando precisamos completar os caracteres de uma variável com um número específico à direita, usamos rightPad. Isso é necessário quando o sistema de destino exige que o campo tenha 10 caracteres, como no exemplo.
  • Neste caso usamos zero, mas outro caractere pode ser usado.


Entrada JSON:

Bloco de código
{
   "PersonalData":[
      {
         "name":"John",
         "age":25,
         "Passport":"123",
         "AddressDestiny":"1600 Pennsylvania Washington DC20500 EUA",
         "email":"[email protected]"
      },
      {
         "name":"Jane",
         "age":30,
         "Passport":"456",
         "AddressDestiny":"1400 Defense Blvd Washington VA20301 EUA",
         "email":"[email protected]"
      }
   ]
}


Jolt Spec:

Bloco de código
[
   {
      "operation":"modify-overwrite-beta",
      "spec":{
         "PersonalData":{
            "*":{
               "PassportLeftPad":"=rightPad(@(1,Passport),10,0'')"
            }
         }
      }
   },
   {
      "operation":"shift",
      "spec":{
         "PersonalData":{
            "*":{
               "name":"PersonalData[&1].name",
               "age":"PersonalData[&1].age",
               "PassportLeftPad":"PersonalData[&1].passport",
               "AddressDestiny":"PersonalData[&1].addressDestiny"
            }
         }
      }
   }
]


Saída:

Bloco de código
{
   "PersonalData":[
      {
         "name":"John",
         "age":25,
         "passport":"1230000000",
         "addressDestiny":"1600 Pennsylvania Washington DC20500 EUA"
      },
      {
         "name":"Jane",
         "age":30,
         "passport":"4560000000",
         "addressDestiny":"1400 Defense Blvd Washington VA20301 EUA"
      }
   ]
}


...

Deck of Cards
historyfalse
idsample
Card
id1
labelUm campo de origem dois campos de destino
  • Quando precisamos enviar a mesma informação de um campo na origem para dois ou mais campos no destino, podemos fazer desta forma, como no exemplo do campo Passaporte no campo operação.


Bloco de código
"OriginField": [ "DestinyField", "DestinyField" ]


Entrada JSON:

Bloco de código
{
   "PersonalData":[
      {
         "name":"John",
         "age":25,
         "Passport":"123",
         "AddressDestiny":"1600 Pennsylvania Washington DC20500 EUA",
         "email":"[email protected]"
      },
      {
         "name":"Jane",
         "age":30,
         "Passport":"456",
         "AddressDestiny":"1400 Defense Blvd Washington VA20301 EUA",
         "email":"[email protected]"
      }
   ]
}


Jolt Spec:

Bloco de código
[
   {
      "operation":"shift",
      "spec":{
         "PersonalData":{
            "*":{
               "name":"PersonalData[&1].name",
               "age":"PersonalData[&1].age",
               "Passport":[
                  "PersonalData[&1].passportDestiny",
                  "PersonalData[&1].passportOrigin"
               ],
               "AddressDestiny":"PersonalData[&1].addressDestiny"
            }
         }
      }
   }
]


Saída:

Bloco de código
{
   "PersonalData":[
      {
         "name":"John",
         "age":25,
         "passportDestiny":"123",
         "passportOrigin":"123",
         "addressDestiny":"1600 Pennsylvania Washington DC20500 EUA"
      },
      {
         "name":"Jane",
         "age":30,
         "passportDestiny":"456",
         "passportOrigin":"456",
         "addressDestiny":"1400 Defense Blvd Washington VA20301 EUA"
      }
   ]
}


...

Deck of Cards
historyfalse
idsample
Card
id1
labelSubstring
  • Quando estivermos no sistema alvo precisamos limitar o tamanho de um campo para que não tenhamos um erro String ou binário ou os dados seriam truncados.


Bloco de código
"var": "=substring(@(,parameterFieldOrigin), parâmetroStartIndex, parâmetroRange)"


Entrada JSON:

Bloco de código
{
   "PersonalData":[
      {
         "name":"John",
         "age":25,
         "Passport":"123",
         "AddressDestiny":"1600 Pennsylvania Washington DC20500 EUA",
         "email":"[email protected]"
      },
      {
         "name":"Jane",
         "age":30,
         "Passport":"456",
         "AddressDestiny":"1400 Defense Blvd Washington VA20301 EUA",
         "email":"[email protected]"
      }
   ]
}


Jolt Spec:

Bloco de código
[
   {
      "operation":"modify-default-beta",
      "spec":{
         "PersonalData":{
            "*":{
               "AddressDestinySubstring":"=substring(@(1,AddressDestiny),0,20)"
            }
         }
      }
   },
   {
      "operation":"shift",
      "spec":{
         "PersonalData":{
            "*":{
               "name":"PersonalData[&1].name",
               "age":"PersonalData[&1].age",
               "Passport":"PersonalData[&1].passport",
               "AddressDestinySubstring":"PersonalData[&1].addressDestiny"
            }
         }
      }
   }
]


Saída:

Bloco de código
{
   "PersonalData":[
      {
         "name":"John",
         "age":25,
         "passport":"123",
         "addressDestiny":"1600 Pennsylvania Wa"
      },
      {
         "name":"Jane",
         "age":30,
         "passport":"456",
         "addressDestiny":"1400 Defense Blvd Wa"
      }
   ]
}


...

Deck of Cards
historyfalse
idsample
Card
id1
labelTrim
  • Quando o campo de origem contém caracteres em branco desnecessários, usamos trim para limpar esses espaços em branco.


Entrada JSON:

Bloco de código
{
   "PersonalData":[
      {
         "name":"John ",
         "age":25,
         "Passport":"123",
         "AddressDestiny":"1600 Pennsylvania Washington DC20500 EUA",
         "email":"[email protected]"
      },
      {
         "name":"Jane ",
         "age":30,
         "Passport":"456",
         "AddressDestiny":"1400 Defense Blvd Washington VA20301 EUA",
         "email":"[email protected]"
      }
   ]
}


Jolt Spec:

Bloco de código
[
   {
      "operation":"modify-default-beta",
      "spec":{
         "PersonalData":{
            "*":{
               "nameTrim":"=trim(@(1,name))"
            }
         }
      }
   },
   {
      "operation":"shift",
      "spec":{
         "PersonalData":{
            "*":{
               "nameTrim":"PersonalData[&1].name",
               "age":"PersonalData[&1].age",
               "Passport":"PersonalData[&1].passport",
               "AddressDestiny":"PersonalData[&1].addressDestiny"
            }
         }
      }
   }
]


Saída:

Bloco de código
{
   "PersonalData":[
      {
         "name":"John",
         "age":25,
         "passport":"123",
         "addressDestiny":"1600 Pennsylvania Washington DC20500 EUA"
      },
      {
         "name":"Jane",
         "age":30,
         "passport":"456",
         "addressDestiny":"1400 Defense Blvd Washington VA20301 EUA"
      }
   ]
}


...

Deck of Cards
historyfalse
idsample
Card
id1
labelIF
  • Neste exemplo, se acessarmos o campo "@(0,idade)" se a idade for igual a 25, entramos na condição e pegamos os valores dos campos e montamos o elemento na lista de destino. No ponto em que definimos o "*" no mesmo nível do campo "@(0,age)", todos os outros elementos cujo valor de idade não é 25 entrará nesta condição;
  • A lista de destino altera o número do nível para PersonalData[&3];
  • E acessar os valores dos campos dentro do if também altera o número do nível para 2"@(2,nome)";
  • Se errar o nível de acesso do if, dos campos ou da lista de destinos, não funcionará;
  • Recomendamos que faça alguns testes sem a lista de alvos para entender se o if está funcionando;
  • Tudo isso nos permite criar um novo campo com nova informação para todos os elementos com idade igual ou superior a 25 anos, como é o caso com FieldTest.


Entrada JSON:

Bloco de código
{
   "PersonalData":[
      {
         "name":"John",
         "age":25,
         "Passport":"123",
         "AddressDestiny":"1600 Pennsylvania Washington DC20500 EUA",
         "email":"[email protected]"
      },
      {
         "name":"Jane",
         "age":30,
         "Passport":"456",
         "AddressDestiny":"1400 Defense Blvd Washington VA20301 EUA",
         "email":"[email protected]"
      }
   ]
}


Jolt Spec:

Bloco de código
[
   {
      "operation":"shift",
      "spec":{
         "PersonalData":{
            "*":{
               "@(0,age)":{
                  "25":{
                     "@(2,name)":"PersonalData[&3].name",
                     "@(2,age)":"PersonalData[&3].age",
                     "@(2,Passport)":"PersonalData[&3].passport",
                     "@(2,AddressDestiny)":"PersonalData[&3].addressDestiny",
                     "#ValueTest":"PersonalData[&3].FieldTest"
                  },
                  "*":{
                     "@(2,name)":"PersonalData[&3].name",
                     "@(2,age)":"PersonalData[&3].age",
                     "@(2,Passport)":"PersonalData[&3].passport",
                     "@(2,AddressDestiny)":"PersonalData[&3].addressDestiny"
                  }
               }
            }
         }
      }
   }
]


Saída:

Bloco de código
{
   "PersonalData":[
      {
         "name":"John",
         "age":25,
         "passport":"123",
         "addressDestiny":"1600 Pennsylvania Washington DC2500 EUA",
         "FieldTest":"ValueTest"
      },
      {
         "name":"Jane",
         "age":30,
         "passport":"456",
         "addressDestiny":"1400 Defense Blvd Washington VA2301 EUA"
      }
   ]
}
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 Removed