Transformando dados JSON heterogêneos em um mapa de mensagens
No editor de Mapeamento de Dados Gráficos, você pode usar a função Add User-Defined para transformar dados JSON heterogêneos.
Antes de Começar
Crie um mapa de mensagem com o domínio de saída configurado para JSON. Para obter mais informações, consulte Modelando graficamente uma mensagem JSON em um mapa de mensagem
Sobre esta tarefa
A abordagem para modelar dados JSON heterogêneos é definir cada estrutura como uma união de dados diferentes que podem estar presentes em cada formato possível. Em seguida, configure os dados, que estão presentes em algumas instâncias de dados, como opcionais.
Por padrão, ao se modelar dados JSON no editor de Mapeamento de Dados Gráficos, você cria objetos e matrizes em que todas as instâncias são iguais. Todos os objetos com o mesmo nome possuem o mesmo conjunto de campos de dados e todas as entidades em uma matriz possuem o mesmo conjunto de campos de dados. Esse caso de uso corresponde ao uso mais comum de formatos de dados JSON.
O JSON permite que as entradas nas matrizes JSON tenham estrutura e tipos diferentes. Para Objetos JSON, alguns aplicativos JSON também podem permitir o mesmo nome para objetos ou valores contidos que podem então ter estrutura e tipos diferentes. A especificação JSON diz claramente que: Os nomes dentro de um objeto DEVEM ser exclusivos.
Para obter mais informações, consulte O JavaScript Object Notation (JSON) Data Interchange Format). Utilize este formato apenas se for exigido pelos aplicativos externos. Esse formato de dados JSON são chamados de dados JSON heterogêneos.
Se você tiver um esquema JSON para seus dados da mensagem, será possível usar isso conforme descrito em Criando ou transformando uma mensagem JSON usando um esquema JSON. Como alternativa, é possível modelar dados JSON heterogêneos usando a função Incluir definido pelo usuário conforme descrito neste tópico ou é possível usar um modelo de esquema XML equivalente conforme descrito em Modelando uma mensagem JSON para uso em um mapa de mensagem usando um modelo de esquema XML equivalente.
- Todas as entradas na matriz devem conter objetos ou valores.
- Você pode modelar matrizes de objeto de dados JSON heterogêneas usando a função Add User-Defined .
- Para modelar matrizes de valores JSON heterogêneas, em que o tipo de cada instância pode variar, deve-se usar um esquema externo para fornecer o tipo do elemento Item que representa cada entrada de valor na matriz.
Procedimento
Complete as seguintes etapas para modelar dados JSON heterogêneos no editor de Mapeamento de Dados Gráficos:
Exemplo
Esse exemplo mostra como transformar uma mensagem de objeto JSON, que descreve um veículo que usa dois objetos de dados JSON heterogêneos com valores nomeados diferentes, em uma mensagem de matriz JSON heterogênea, em que cada entrada é um objeto de dados com valores nomeados diferentes.
O aplicativo de entrada produz uma mensagem de objeto JSON heterogênea que descreve um veículo que usa dois objetos de dados JSON heterogêneos. Cada objeto de dados JSON é chamado de atributo e contém elementos de nome e valor diferentes. Os dados JSON de entrada são os seguintes:
{ "Description" : {
"attribute" : {
"colour" : "blue",
"metallic" : true
},
"attribute" : {
"capacity" : 1.4,
"fuel" : "diesel"
}
}
}
- O objeto de atributo heterogêneo contém os pares nome-valores colour e metallic ou capacity e fuel.
- Cada um dos pares nomes-valores é modelado como opcional (ocorrência mínima configurada para 1).

[{"attributeType":"Paint","colour":"blue","metallic":true},
{"attributeType":"Engine","capacity":1.4E+0,"fuel":"diesel"}]- A matriz é representada por um objeto JSON do tipo Anônimo.
- O primeiro elemento é um elemento attributeType único e necessário. Todas as entradas na matriz contêm esse elemento nome-valor.
- Os outros elementos nome-valor são colour, metallic, capacity e fuel. Esses elementos não ocorrem em todas as entidades na matriz. Todos esses elementos são definidos como opcionais. Cada elemento possui sua propriedade ocorrência mínima configurada para 0.

Para transformar a entrada na saída necessária, use a conversão Para Cada para criar cada uma das entradas na matriz a partir dos mesmos objetos de entrada de atributo (de repetição) nomeados.

- É possível definir a condição If para verificar colour:
$attribute2/colour. Quando esta expressão é avaliada como true, a conversão no mapa aninhado associado a If é aplicada. - O caminho Else não requer uma condição. Quando a expressão If é avaliada como false, a conversão no mapa aninhado associado a Else é aplicada.

O mapa aninhado que está associado à conversão If configura o elemento attributeType para Paint e copia o valor dos outros elementos inalterados.

O outro mapa aninhado que está associado a Else configura o elemento attributeType para Engine e copia o valor dos outros elementos inalterados.

[{"attributeType":"Paint","colour":"blue","metallic":true},
{"attributeType":"Engine","capacity":1.4E+0,"fuel":"diesel"}]
(0x01000000:Object):JSON = ( ['json' : 0x298f1e00]
(0x01001000:Array):Data = (
(0x01000000:Object):Item = (
(0x03000000:NameValue):attributeType = 'Paint' (CHARACTER)
(0x03000000:NameValue):colour = 'blue' (CHARACTER)
(0x03000000:NameValue):metallic = TRUE (BOOLEAN)
)
(0x01000000:Object):Item = (
(0x03000000:NameValue):attributeType = 'Engine' (CHARACTER)
(0x03000000:NameValue):capacity = 1.4E+0 (FLOAT)
(0x03000000:NameValue):fuel = 'diesel' (CHARACTER)
)
)
)O que fazer em seguida
Implemente o mapa da mensagem e verifique se a mensagem de saída é válida. Para obter mais informações, consulte Resolução de problemas de um mapa de mensagens..