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