Stream JSON File Reader

Descubra mais sobre o componente Stream JSON File Reader e saiba como utilizá-lo na Digibee Integration Platform.

O Stream JSON File Reader lê um arquivo JSON local, aplica uma expressão JSON Path, devolve em um estrutura JSON conforme a expressão definida e dispara subpipelines para processar cada mensagem. O componente deve ser utilizado para arquivos grandes.

Parâmetros

Dê uma olhada nos parâmetros de configuração do componente. Parâmetros suportados por expressões Double Braces estão marcados com (DB).

Parâmetro
Descrição
Valor padrão
Tipo de dado

File Name (DB)

Nome do arquivo ou full file path (ex.: tmp/processed/file.json) do arquivo JSON local.

data.json

String

JSON Path

Expressão JSON Path que irá determinar como será feita a leitura em stream desse arquivo JSON.

$

String

Element Identifier

Atributo que será enviado em caso de erros.

data

String

Parallel Execution Of Each Iteration

Ocorre em paralelo com a execução do loop.

False

Booleano

Fail On Error

A habilitação desse parâmetro suspende a execução do pipeline apenas quando há uma ocorrência grave na estrutura da iteração, impedindo a sua conclusão por completo.

A ativação do parâmetro Fail On Error não tem ligação com erros ocorridos nos componentes utilizados para a construção dos subpipelines (onProcess e onException).

False

Booleano

Fluxo de mensagens

Entrada

Não se espera nenhuma mensagem de entrada específica e sim apenas a posse de um arquivo JSON no diretório local do pipeline e o preenchimento dos campos File Name e JSON Path para o processamento do arquivo.

Saída

{
"total": 0,
"success": 0,
"failed": 0
}
  • total: número total de linhas processadas.

  • success: número total de linhas processadas com sucesso.

  • failed: número total de linhas cujo processamento falhou.

Para saber se uma linha foi processada corretamente, deve haver o retorno { "success": true } para cada linha processada.

O componente joga uma exceção se o File Name não existir ou não puder ser lido.

A manipulação de arquivos dentro de um pipeline ocorre de forma protegida. Todos os arquivos podem ser acessados apenas por um diretório temporário, no qual cada pipeline key dá acesso ao seu próprio conjunto de arquivos.

O Stream JSON File Reader realiza processamento em lote. Para entender melhor o conceito, leia o artigo sobre Processamento em lote.

Stream JSON File Reader em Ação

Realizando o stream do arquivo sem filtros no JSON Path

Entrada

  • file.json

{
"products" : [
{
"product": "Chair",
"price": 20.75,
"tags": ["NEW", "FURNITURE"]
},
{
"product": "TV",
"price": 399.99,
"tags": ["NEW", "FURNITURE"]
},
{
"product": "Couch",
"price": 100,
"tags": ["NEW", "FURNITURE"]
},
{
"product": "Table",
"price": 78.99,
"tags": ["NEW", "FURNITURE"]
}
]
}
  • File Name: file.json

  • JSON Path: $.products[*]

Saída

{
"total": 4,
"success": 4,
"failed": 0
}

Cada objeto dentro do array "products" do arquivo informado será processado de forma independente:

  • Primeiro subfluxo

{"data": {
"product": "Chair",
"price": 20.75,
"tags": ["NEW", "FURNITURE"]
}}
  • Segundo subfluxo

{"data": {
"product": "TV",
"price": 399.99,
"tags": ["NEW", "FURNITURE"]
}}
  • Terceiro subfluxo

{"data": {
"product": "Couch",
"price": 100,
"tags": ["NEW", "FURNITURE"]
}}
  • Quarto subfluxo

{"data": {
"product": "Table",
"price": 78.99,
"tags": ["NEW", "FURNITURE"]
}}

Realizando o stream do arquivo com filtros no JSON Path

Entrada

  • file.json

{
"products" : [
{
"product": "Chair",
"price": 20.75,
"tags": ["NEW", "FURNITURE"]
},
{
"product": "TV",
"price": 399.99,
"tags": ["NEW", "FURNITURE"]
},
{
"product": "Couch",
"price": 100,
"tags": ["NEW", "FURNITURE"]
},
{
"product": "Table",
"price": 78.99,
"tags": ["NEW", "FURNITURE"]
}
]
}
  • File Name: file.json

  • JSON Path: $.products[?(@.price < 80)]

Saída

{
"total": 2,
"success": 2,
"failed": 0
}

Cada objeto dentro do array "products" do arquivo informado será processado de forma independente:

  • Primeiro subfluxo

{"data": {
"product": "Chair",
"price": 20.75,
"tags": ["NEW", "FURNITURE"]
} }
  • Segundo subfluxo

{"data": {
"product": "Table",
"price": 78.99,
"tags": ["NEW", "FURNITURE"]
}}

Realizando o stream do arquivo com filtros no JSON Path e retornando somente o valor do atributo 'product'

Entrada

  • file.json

{
"products" : [
{
"product": "Chair",
"price": 20.75,
"tags": ["NEW", "FURNITURE"]
},
{
"product": "TV",
"price": 399.99,
"tags": ["NEW", "FURNITURE"]
},
{
"product": "Couch",
"price": 100,
"tags": ["NEW", "FURNITURE"]
},
{
"product": "Table",
"price": 78.99,
"tags": ["NEW", "FURNITURE"]
}
]
}
  • File Name: file.json

  • JSON Path: $.products[?(@.price < 80)].product

Saída

{
"total": 2,
"success": 2,
"failed": 0
}

Cada objeto dentro do array "products" do arquivo informado será processado de forma independente:

  • Primeiro subfluxo

{"data": "Chair" }
  • Segundo subfluxo

{"data": "Table" }

Atualizado