...
Este guia tem como objetivo orientar o uso do componente JOLT, apresentando exemplos de uso reais para facilitar integrações.
O que é JOLT?
...
JOLT é uma biblioteca de transformação JSON poderosa e flexível que simplifica o processo de conversão entre diferentes estruturas de dados JSON. É possível mapear e transformar dados JSON rapidamente e com eficiência.
Estruturas JSON
...
O componente JOLT permite execuções e transformações complexas em estruturas JSON, como a renomeação de campos, filtragem de dados e reorganização de objetos por exemplo.
Como funciona a biblioteca de transformação?
...
A biblioteca Jolttransformation trabalha com base no princípio da "especificação por exemplo". É possível fornecer um exemplo de dados JSON de origem e um exemplo JSON de destino que são dados para definir a desejada transformação.
Como converter estruturas JSON?
...
Com a utilização do JOLT é possível definir um arquivo JSON de transformação que específica regras de conversão entre as estruturas de origem e destino. O componente irá aplicar estas regras para converter os dados JSON de acordo.
Diferentes tipos de transformação
...
O componente JOLT suporta vários tipos de transformação, como:
- Transformação de objeto a objeto;
- Transformação de array para array;
- Transformação da matriz Objectto e vice versa.
Exemplos de transformação
...
Abaixo trazemos alguns exemplo de transformações que podem ser realizadas com JOLT.
- Renomear campos;
- Filtrar dados;
- Reorganizar objetos;
- Agrupar várias estruturas JSON.
Características avançadas
...
O componente JOLT oferece vários recursos avançados, como expressões, funções personalizadas que permite executar tarefas complexas e transformações precisas.
Vantagens de usar JOLT
...
O componente JOLT oferece várias vantagens como:
- Simplicidade no uso;
- Alta performance;
- Flexibilidade e extensibilidade;
- Compatibilidade com estruturas JSON;
- Extensa documentação e comunidade de apoio.
Exemplos de usos
...
Veja abaixo vários exemplos de uso e dicas que vamos apresentar nesta documentação. Execute os testes clicando aqui.
Deck of Cards |
---|
|
Card |
---|
id | 1 |
---|
label | Exemplo DE\PARA simples |
---|
| Entrada JSON: Bloco de código |
---|
{
"HelloWord":2024
} |
Bloco de código |
---|
[
{
"operation":"shift",
"spec":{
"HelloWord":"Hello"
}
}
] |
Saída Bloco de código |
---|
{
"HelloWord":2024
} |
|
|
Lista de introdução
...
Exemplo de uso DE\PARA em listas;
Deck of Cards |
---|
|
Card |
---|
id | 1 |
---|
label | Lista de destino sem nome e campo |
---|
| Entrada JSON: 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
}
] |
|
|
...
Deck of Cards |
---|
|
Card |
---|
id | 1 |
---|
label | Exemplo de lista convertida em outra lista |
---|
| - Exemplo de uso onde uma lista será convertida em outra lista, neste caso nome será o termo das propriedades alvo:
Entrada JSON: 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"
}
] |
|
|
...
Deck of Cards |
---|
|
Card |
---|
id | 1 |
---|
label | Listas de origem (nomes) com elementos campos |
---|
| - Lista de origem "nomes" com elementos que possuem campos com nomes definidos. Lista de destino "itens" com nomes diferentes:
Entrada JSON: 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 |
---|
|
Card |
---|
id | 1 |
---|
label | Lista de fontes (nome) com elementos campos |
---|
| - Lista de fontes (nomes) com elementos que possuem campos com nomes definidos:
Entrada JSON: 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 |
---|
|
Card |
---|
id | 1 |
---|
label | Lista de origem "nomes" Destino duas listas "ListName" e "ListAge" |
---|
| - Para mostrar apenas valores na lista, remova os nomes de destino (ListName[&1].name)( ListName[&1]???)
Entrada JSON: 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 |
---|
|
Card |
---|
id | 1 |
---|
label | Lista de origem "nomes" destino duas listas "ListName" e "ListAge" |
---|
|
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 |
---|
|
Card |
---|
id | 1 |
---|
label | Unifique 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 |
---|
|
Card |
---|
id | 1 |
---|
label | Modificar-substituir-beta |
---|
| - Adicione um campo nos elementos da lista de destino. Capture o valor do campo fora da lista "BossName" na operação modificar-substituir-beta.
Entrada JSON: 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 |
---|
|
Card |
---|
id | 1 |
---|
label | Concatenar 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 |
---|
|
Card |
---|
| - O objetivo é remover os campos BossName e BossLastName após ingressar e criar o campo fullName para não exibilo na saída.
Entrada JSON: 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 |
---|
|
Card |
---|
id | 1 |
---|
label | Crie uma lista dentro de outra lista |
---|
| - A lista de destino é formada por dois campos da lista de origem.
Entrada JSON: 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 |
---|
|
Card |
---|
id | 1 |
---|
label | Outra abordagem: crie uma lista dentro de outra lista |
---|
| - Introdução especificação de choque com dois turnos de operação. A lista de destino é formada por dois campos da lista de origem.
Entrada JSON: 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 |
---|
|
Card |
---|
id | 1 |
---|
label | Lista de origem com outra lista |
---|
| - Nosso objetivo é criar uma lista de destinos com uma lista dentro com outra abordagem.
Entrada JSON: 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 |
---|
|
Card |
---|
id | 1 |
---|
label | Elemento 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 |
---|
|
Card |
---|
id | 1 |
---|
label | Elemento 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 |
---|
|
Card |
---|
id | 1 |
---|
label | Dividir 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 |
---|
|
Card |
---|
id | 1 |
---|
label | Primeiro 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 |
---|
|
Card |
---|
| - 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 |
---|
|
Card |
---|
| - 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 |
---|
|
Card |
---|
id | 1 |
---|
label | Todos 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 |
---|
|
Card |
---|
| - 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 |
---|
|
Card |
---|
id | 1 |
---|
label | Dividir 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 |
---|
|
Card |
---|
id | 1 |
---|
label | Remover 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 |
---|
|
Card |
---|
| 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 |
---|
|
Card |
---|
id | 1 |
---|
label | Remover 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 |
---|
|
Card |
---|
| 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 |
---|
|
Card |
---|
| 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 |
---|
|
Card |
---|
id | 1 |
---|
label | Para 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 |
---|
|
Card |
---|
| 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 |
---|
|
Card |
---|
id | 1 |
---|
label | Modificar 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 |
---|
|
Card |
---|
| - 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 |
---|
|
Card |
---|
| 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 |
---|
|
Card |
---|
| - 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 |
---|
|
Card |
---|
| - 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 |
---|
|
Card |
---|
| - 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 |
---|
|
Card |
---|
| - 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 |
---|
|
Card |
---|
id | 1 |
---|
label | Um 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 |
---|
|
Card |
---|
| - 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 |
---|
|
Card |
---|
| - 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 |
---|
|
Card |
---|
| - 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"
}
]
} |
|
|