Transformer: Visão geral das operations
Descubra mais sobre qual operation pode ser utilizada no Transformer (JOLT) e saiba como utilizá-la na Digibee Integration Platform.
Este artigo apresenta exemplos das seguintes operations (string) de JOLT:
- shift 
- sort 
- cardinality 
- modify-overwrite-beta 
- remove 
shift
Usado para alterar a forma dos valores JSON ou partes da árvore de entrada e incluí-los em locais especificados na saída. A estrutura se resume em navegar até a variável ou objeto JSON que deseja alterar a estrutura, colocar : (dois pontos) e entre "" aspas, informar o destino para o objeto.
- * (asterisco): referencia "todos os elementos" dentro de um objeto. 
- & (e comercial): copia o nome da variável para o destino. 
- . (ponto): cria níveis no JSON de destino. 
Exemplo:
Entrada
{
  "body": {
    "cep": "05350-000",
    "logradouro": "Avenida Escola Politécnica",
    "bairro": "Rio Pequeno",
    "localidade": "São Paulo",
    "uf": "SP"
  },
  "cliente": {
    "codigo": 2,
    "name": "RODRIGO LARA",
    "email": "[email protected]",
    "due_date": "2019-03-27"
  }
}Spec
[
  {
    "operation": "shift",
    "spec": {
      "cliente": {
        "codigo": "customer.id",
        "name": "customer.&",
        "email": "customer.email"
      },
      "body": {
        "*": "customer.address.&"
      }
    }
    }
]Saída
{
  "customer" : {
    "id" : 2,
    "name" : "RODRIGO LARA",
    "email" : "[email protected]",
    "address" : {
      "cep" : "05350-000",
      "logradouro" : "Avenida Escola Politécnica",
      "bairro" : "Rio Pequeno",
      "localidade" : "São Paulo",
      "uf" : "SP"
    }
  }
}default
Usado para adicionar novos campos e valores no JSON de saída.
Exemplo:
Entrada
{
     "counterTop": {
       "loaf1": {
         "type": "white"
       },
       "loaf2": {
         "type": "wheat"
       },
       "jar1": {
         "contents": "peanut butter"
       },
       "jar2": {
         "contents": "jelly"
       }
}Spec
  [
     {
       "operation": "default",
       "spec": {
         "counterTop": {
           "loaf1": {
             "slices": [
               "slice1",
               "slice2",
               "slice3",
               "slice4
             ]
           }
         }
       }
     }
   ]
 }Saída
{
   "counterTop" : {
    "loaf1" : {
      "type" : "white",
       "slices" : [ "slice1", "slice2", "slice3", "slice4" ]
    },
    "loaf2" : {
      "type" : "wheat"
    },
    "jar1" : {
       "contents" : "peanut butter"
    },
    "jar2" : {
       "contents" : "jelly"
    }
  }
}
cardinality
Usado para transformar elementos no JSON de entrada em valores únicos (objeto) ou em listas (array) na saída.
Exemplo:
Entrada
{
   "counterTop": {
    "loaf1": {
       "type": "white",
       "slices": [
         "slice1",
        "slice2",
         "slice3",
         "slice4"
      ]
    },
    "loaf2": {
       "type": "wheat"
    },
    "jar1": {
       "contents": "peanut butter"
    },
    "jar2": {
       "contents": "jelly"
    }
  }
}Spec
[
   {
      "operation": "cardinality",
     "spec": {
        "counterTop": {
          "loaf1": {
            "slices": "ONE" 
         }
       }
     }
    }
  ]Saída
{
   "counterTop" : {
    "loaf1" : {
      "type" : "white",
       "slices" : "slice1"
    },
    "loaf2" : {
      "type" : "wheat"
    },
    "jar1" : {
       "contents" : "peanut butter"
    },
    "jar2" : {
       "contents" : "jelly"
    }
  }
}Remove
Usado para remover campos do JSON de entrada
Exemplo:
Entrada
{
   "counterTop": {
    "loaf1": {
       "type": "white",
       "slices": "slice1"
    },
    "loaf2": {
       "type": "wheat"
    },
    "jar1": {
       "contents": "peanut butter"
    },
    "jar2": {
       "contents": "jelly"
    }
  }
}Spec
[
   {
      "operation": "remove",
     "spec": {
        "counterTop": {
          "loaf2": "",
          "jar1": ""
       }
     }
    }
]Saída
{
   "counterTop" : {
    "loaf1" : {
      "type" : "white",
       "slices" : "slice1"
    },
    "jar2" : {
      "contents" : "jelly"
    }
  }
}modify-overwrite-beta: 
Usado para permitir a utilização de funções predefinidas no JOLT para alterar valores e até mesmo tipo dos elementos.
As funções incluem operations básicas de string e matemática (toLower, toUpper, concat, min / max / abs, toInteger, toDouble, toInt) e podem ser aplicadas aos valores JSON de origem.
Exemplo:
Entrada
{
   "counterTop": {
    "loaf1": {
       "type": "white",
       "slices": "slice1"
    },
    "jar2": {
       "contents": "jelly"
    }
  }
}Spec
[
  {
     "operation": "modify-overwrite-beta",
    "spec": {
       "counterTop": {
         "jar2": {
             //acessando o elemento "contents" e alterando seu valor para upper
           "contents": "=toUpper"
        }
      }
    }
  }
]Saída
{
  "counterTop" : {
    "loaf1" : {
      "type" : "white",
       "slices" : "slice1"
    },
    "jar2" : {
      //a saída está em UpperCase
       "contents" : "JELLY"
    }
  }
}sort
Usado para ordenar toda a entrada JSON na saída. A Ordenação não pode ser configurada; todo o JSON será afetado.
- A Ordenação não olha para os valores das variáveis, apenas para seu nome. 
- A Saída será ordenada em ordem alfabética. (Observação: seguindo o convenção de estrutura JSON, a ordem as variáveis não altera sua entrutura/comportamento.) 
Exemplo:
Entrada
{
   "counterTop": {
    "loaf1": {
       "type": "white",
       "slices": "slice1"
    },
    "jar2": {
       "contents": "JELLY"
    }
  }
}Spec
[
  {
     "operation": "sort"
    }
]Saída
{
   "counterTop" : {
    "jar2" : {
       "contents" : "JELLY"
    },
    "loaf1" : {
       "slices" : "slice1",
      "type" : "white"
    }
  }
}{
    "operation": "modify-overwrite-beta",
    "spec": {
      "*": "=recursivelySquashNulls"
    }
  }Remover todos os atributos que os valores sejam null
{
    "operation": "modify-overwrite-beta",
    "spec": {
      "*": "=recursivelySquashNulls"
    }
  }Aprenda mais com outros exemplos e Teste Online. Para conteúdo avançado sobre o tema, confira o repositório sobre JOLT no GitHub.
Isto foi útil?
