Á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".
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
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
   }
]


...

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

  • 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

  • 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.
Deck of Cards
historyfalse
idsample
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"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: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
idsamples
Card
id1
labelLista de origem "nomes" destino duas listas "ListName" e "ListAge"
Deck of Cards
historyfalse
idsamples
Card
id1
labelUnifique duas listas "ListName" e "ListAge"
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"
   }
]


...

Saída:

Image Removed

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
idsamplessample
Card
id1
labelModificar-substituir-betaListas 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: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

  • 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
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 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 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"
      },
      {
         "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
labelLista de fontes (nome) com elementos campos
  • Lista de fontes (nomes) com elementos que possuem campos com nomes definidos:


Entrada JSON:

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