JSON to XML Transformer

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

R
Escrito por Roberto Viani Junior
Atualizado há mais de uma semana

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

O JSON To XML Transformer gera um XML baseado em um JSON recebido na sua mensagem de entrada.

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

  • JSON Field Path: JSON como caminho do campo string em notação com pontos (dotted notation).

  • Root Element Name: elemento raiz do XML gerado.

  • Preserve Original: se ativada, a opção preserva os campos originais.

  • Header: XML header a ser incluído antes do XML payload.

Fluxo de Mensagens

Entrada

O componente espera uma mensagem em qualquer formato, mas vai procurar procurar por um caminho dentro da propriedade de configuração JSON Field Path.

Alguns exemplos válidos de entrada:

Exemplo 1

{
"orders": {
"order": [
{
"a": 1,
"b": 1
},
{
"a": 2,
"b": 2
},
{
"a": 3,
"b": 3
}
]
}
}

Exemplo 2

{
"payload": {
"test": {
"a": 1,
"b": 1
}
}
}

Saída

A estrutura será igual a de entrada, porém com outra propriedade de JSON string e a sua representação de objeto JSON. Em caso de erro, a propriedade "error" será criada no mesmo nível da propriedade original.

A notação com pontos (dotted notation) de JSON vai procurar pelo elemento raiz que está sendo processado pelo pipeline e realizar um cruzamento de acordo com as especificações passadas na propriedade JSON Field Path.

Exemplo

Em uma representação do JSON Field Path contendo a.b.c.d, "a" será procurado no elemento raiz. Em seguida será o "b", depois o "c" e finalmente o "d". Se um array for encontrado durante o cruzamento, então o algoritmo vai gerar um caminho de cruzamento para cada elemento no array. O algoritmo substitui todas as ocorrências do caminho definido em JSON Field Path.

sem erro

{
"XPTO": "TEMPLATE TRANSFORMADO"
"_body": {}
}

  • _body: se a opção Preserve Original estiver habilitada, a propriedade será exibida na saída contendo o JSON de entrada

  • XPTO: nome dinâmico baseado na configuração do JSON Field Path nas propriedades do componente

com erro

{
"body": null,
"_error": "Can not construct instance of java.util.LinkedHashMap: no String-argument constructor/factory method to deserialize from String value ('')\n at [Source: N/A; line: -1, column: -1]",
"_body": ""
}

  • _body: se a opção Preserve Original estiver habilitada, a propriedade será exibida na saída contendo o JSON de entrada

  • XPTO: nome dinâmico baseado na configuração do JSON Field Path nas propriedades do componente

JSON to XML Transformer em Ação

Exemplo 1

  • JSON Field Path: orders

  • Root Element Name: doc

  • Preserve Original: habilitado

  • Header: <?xml version='1.0' encoding='UTF-8' standalone='no' ?>

Entrada

{
"orders": {
"order": [
{
"a": 1,
"b": 1
},
{
"a": 2,
"b": 2
},
{
"a": 3,
"b": 3
}
]
}
}

Saída

{
"orders": "<?xml version='1.0' encoding='UTF-8' standalone='no' ?><doc><order><a>1</a><b>1</b></order><order><a>2</a><b>2</b></order><order><a>3</a><b>3</b></order></doc>",
"_orders": {
"order": [
{
"a": 1,
"b": 1
},
{
"a": 2,
"b": 2
},
{
"a": 3,
"b": 3
}
]
}
}

Exemplo 2

  • JSON Field Path: payload

  • Root Element Name: xpto

  • Preserve Original: desabilitado

Entrada

{
"payload": {
"test": {
"a": 1,
"b": 1
}
}
}

Saída

{
"payload": "<xpto><test><a>1</a><b>1</b></test></xpto>"
}

Respondeu à sua pergunta?