JSON to CSV Transformer

Conheça o componente e saiba como utilizá-lo.

Erick Rubiales avatar
Escrito por Erick Rubiales
Atualizado há mais de uma semana

IMPORTANTE: esta documentação foi descontinuada. Leia a documentação JSON to CSV atualizada no nosso novo portal de documentação.

O JSON to CSV Transformer tem a função de receber um objeto em JSON e, a partir dele, gerar um array contendo os dados para o CSV já formatado.

Dê uma olhada nos parâmetros de configuração do componente:

  • Headers: configura os headers que o componente utilizará para o processamento do texto. Os itens são separados por vírgula e podem conter mais de uma entrada. É um parâmetro obrigatório e deve ser configurado de acordo com o que você deseja processar.

  • Delimiter: símbolo delimitador a ser utilizado no processamento do texto. Por padrão, essa opção vem configurada como uma vírgula (","). É um parâmetro obrigatório, podendo utilizar diversos símbolos como separador.

  • Print Headers: se estiver ativada, a opção insere no resultado os headers previamente configurados como sendo o primeiro elemento do array resultante.

  • Coalesce: se estiver ativada, e um valor da mensagem de entrada for correspondente à algum objeto/array, a entrada será processada e a execução acontecerá normalmente; do contrário, ao receber um valor como objeto/array, um erro será apresentado como resultado e será atribuído “false” para a propriedade “success”.

  • Fail On Error: se a opção estiver habilitada, a execução do pipeline com erro será interrompida; do contrário, a execução do pipeline continua, mas o resultado vai mostrar um valor falso para a propriedade "success".

O componente espera uma mensagem com a propriedade "data" no JSON. O valor dessa propriedade pode ser um array ou um objeto. Veja a seguir um exemplo simples que demonstra a funcionalidade do JSON to CSV Transformer:

Fluxo de mensagens

Entrada

Você precisa configurar um JSON de entrada em um pipeline com o componente JSON to CSV Transformer. Após adicioná-lo ao pipeline, é preciso configurar os headers como product,price ou o exemplo não vai funcionar.

{
"data": [
{
"product": "Samsung 4k Q60T 55",
"price": 3278.99
},
{
"product": "Samsung galaxy S20 128GB",
"price": 3698.99
}
]
}

Saída

Com as configurações feitas conforme as especificações acima, o resultado será:

{
"data": [
"Samsung 4k Q60T 55,3278.99",
"Samsung galaxy S20 128GB,3698.99"
]
}

JSON to CSV Transformer em Ação

Veja abaixo como o componente se comporta em determinada situação e a sua respectiva configuração.

Informando um valor sendo objeto com a configuração "Coalesce: false" e "Fail On Error: false"

Com as configurações indicadas, o JSON não será processado e o resultado será uma mensagem de erro e com a propriedade success: false

Entrada

{
"data": [
{
"product": {
"name": "Samsung 4k Q60T 55"
},
"price": 3278.99
},
{
"product": {
"name": "Samsung galaxy S20 128GB"
},
"price": 3698.99
}
]
}

Saída

{
"success": false,
"message": "Property product is an object"
}

Informando um valor sendo objeto com a configuração "Coalesce: true" e "Fail On Error: false"

Com as configurações indicadas, o JSON será processado e o resultado será um csv com o objeto tratado corretamente.

Entrada

{
"data": [
{
"product": {
"name": "Samsung 4k Q60T 55"
},
"price": 3278.99
},
{
"product": {
"name": "Samsung galaxy S20 128GB"
},
"price": 3698.99
}
]
}

Saída

{
"data": [
"product,price",
"\"{\"\"name\"\":\"\"Samsung 4k Q60T 55\"\"}\",3278.99",
"\"{\"\"name\"\":\"\"Samsung galaxy S20 128GB\"\"}\",3698.99"
]
}

Informando um valor sendo objeto com a configuração "Coalesce: false" e "Fail On Error: true"

Com as configurações indicadas, o JSON não será processado e a execução será interrompida imediatamente.

Entrada

{
"data": [
{
"product": {
"name": "Samsung 4k Q60T 55"
},
"price": 3278.99
},
{
"product": {
"name": "Samsung galaxy S20 128GB"
},
"price": 3698.99
}
]
}

Saída

{
"timestamp": 1603812645143,
"error": "Property product is an object",
"exception": "com.digibee.pipelineengine.exception.PipelineEngineRuntimeException",
"code": 500
}

Respondeu à sua pergunta?