Marshal

O EIP Marshal converte o formato interno (objetos ou estruturas) para um formato externo (como JSON ou XML) para comunicação ou armazenamento. Por exemplo, ele pode converter um objeto Java em uma representação JSON ou XML.

Diferença entre Marshal e Unmarshal

Marshal e Unmarshal são processos fundamentais para a manipulação de dados, permitindo a interoperabilidade entre sistemas.

  • Marshal: é o processo de transformar dados do formato interno do Camel para um formato externo padronizado, como JSON, XML, CSV, ou outros. Essa conversão é essencial para integrar o fluxo com sistemas externos, enviar mensagens a APIs, ou armazenar informações em arquivos de forma estruturada.

  • Unmarshal: trata-se do processo inverso, onde dados recebidos em um formato externo (por exemplo, JSON, XML, CSV) são convertidos para o formato interno utilizado pelo Camel. Esse passo é necessário para que as mensagens possam ser manipuladas, processadas ou roteadas dentro do fluxo de integração do Camel.

Custom

Na lista de tipos de formatos de dados disponíveis em Data Format Type, existe a opção Custom.

Com ela, você pode utilizar Excel como referência, possibilitando que o fluxo de integração processe arquivos nos formatos .xls e .xlsx.

Este data format converterá as linhas da planilha especificada em um array de objetos JSON. O objeto JSON gerado para cada célula conterá, além do valor, metadados sobre o tipo do dado.

Os estilos visuais da planilha (cor da célula, cor da fonte, negrito, bordas e outros) não são importados. Além disso, o componente ainda não oferece suporte a fórmulas.

Confira abaixo um exemplo de uso:

  • Quando alguém acessa GET /teste-excel, o fluxo baixa um arquivo Excel de um servidor SFTP.

  • Depois, transforma o conteúdo em JSON e retorna esse JSON como resposta da API, já com o cabeçalho Content-Type: application/json.

- from:
    uri: rest:get:/teste-excel
    steps:
      - log:
          message: "Iniciando o download do arquivo via SFTP."
      - pollEnrich:
          expression:
            simple: "sftp:eu-central-1.sftpcloud.io:22/download?username={{user}}&password={{pass}}&passiveMode=true&delete=false&fileName={{file}}&binary=true&knownHostsFile=/dev/null&strictHostKeyChecking=no"
      - log:
          message: "Download concluído. Convertendo para JSON."
      - convertBodyTo:
          type: byte[]
      - marshal:
          custom:
            ref: excel
      - setHeader:
          name: Content-Type
          constant: application/json
O Excel também pode ser usado como referência em fluxos com o EIP unmarshal.

Exemplos

Veja a seguir exemplos de outros formatos:

  • CSV

    • A mensagem será convertida para csv.

    • Nenhum parâmetro adicional é necessário.

- marshal:
    csv: {}
  • JSON

    • A mensagem será convertida para json.

    • Será usada a biblioteca Jackson para serializar o corpo da mensagem.

- marshal:
    json:
      library: Jackson
  • XML

    • A mensagem será convertida para XML.

    • O jacksonXml utiliza a biblioteca Jackson, mas também existe o formato genérico xml.

- marshal:
    jacksonXml: {}
- marshal:
    xml: {}

Veja como adicionar um data format diretamente pelo formulário do EIP na aba Diagram:

marshal json

Ao selecionar o formato JSON, o campo Library é preenchido automaticamente com o valor padrão "Jackson". Como é o padrão, ele não é exibido no script do fluxo na aba Source Code, aparecendo apenas se for alterado para um valor diferente.
Thanks for your feedback!
EDIT

Share your suggestions with us!
Click here and then [+ Submit idea]