WebSphere Message Broker, Versão 8.0.0.5 Sistemas operacionais: AIX, HP-Itanium, Linux, Solaris, Windows, z/OS

Consulte as informações sobre a versão mais recente do produto em IBM Integration Bus, Versão 9.0

Usando Matrizes PHP com JSON

Matrizes PHP são mapas associativos, nos quais a chave pode ser um número inteiro ou uma sequência.

Chaves de número inteiro podem ser alocadas automaticamente em ordem sequencial ascendente para funcionar da mesma maneira que uma matriz tradicional indexada por número inteiro. O PHP suporta um operador de índice vazio ([]), que pode ser usado no lado esquerdo de uma designação para incluir um item na matriz, usando um índice de número inteiro com o valor do índice atual mais alto mais 1.

Matrizes associativas PHP são modeladas como estruturas de objetos JSON, visto que matrizes JSON são anônimas.

Os valores em uma árvore lógica JSON podem ser configurados usando qualquer dos tipos nativos PHP, incluindo matrizes. O tipo de matriz determina a forma da árvore lógica JSON resultante: Quando uma variável de matriz PHP multidimensional é designada a um caminho da árvore de domínio JSON, essas regras são aplicadas a cada dimensão da variável de matriz, de modo que uma matriz ou objeto JSON apropriado seja formado na árvore de mensagens para modelar cada dimensão da matriz PHP.
Quando você cria uma árvore de mensagens JSON no PHP usando designações de valores individuais, é possível criar itens de matriz JSON anexando o caminho de destino ao operador de anexo de matriz PHP ([]) na designação. Você pode usar o operador [] em um caminho das seguintes maneiras: Se você tentar criar um item de matriz usando um caminho de destino com o operador [], e o caminho for resolvido como um elemento de objeto JSON existente na árvore, uma exceção será emitida.

O nó PHPCompute suporta a constante PHP MB_JSON_ARRAY, que você pode usar no método MbElement setType() para alterar um elemento de objeto JSON existente em uma matriz JSON. Esse método normalmente é usado quando elementos foram criados copiando de uma árvore de propriedade de outro domínio do analisador.

Para acessar ou alterar um valor existente de um item de matriz JSON em uma árvore, é possível usar um índice de matriz ([index]) para selecionar o item obrigatório. Os itens de matriz JSON não podem ser criados na árvore JSON usando o formato [index]; as tentativas de fazer isso resultam em uma exceção sendo emitida.

Você também pode acessar elementos não matriz na árvore de domínio JSON, como se a árvore fosse uma matriz associativa, usando um nome de chave de índice. Por exemplo, para selecionar um elemento chamado street, que é filho de um elemento chamado address, use a seguinte construção de caminho:
->address['street']

Os exemplos a seguir demonstram como é possível usar matrizes PHP com JSON:

Criando uma Mensagem da Matriz JSON Usando Variáveis PHP Individuais

Você pode criar uma matriz JSON e anexar itens a ela usando um caminho de destino com um operador de índice de anexo de matriz ([]):
    $strVar = "this";
    $boolVar = true;
    $output_assembly->JSON->Data[] = $strVar;
    $output_assembly->JSON->Data[] = $boolVar;

Você deve usar o operador de índice de anexo de matriz ([]) para anexar a uma matriz; não é possível usar o formato [index].

A seguinte árvore de mensagens do broker é produzida:
 (Message):JSON     = ( ['json' : 0xhhhhhh]
      (0x01001000:Array     ): Data = (  
        (0x03000000:NameValue): Item = 'this' (CHARACTER)
        (0x03000000:NameValue):Item = TRUE (BOOLEAN)
      )
  )
Essa árvore de mensagens é serializada para o seguinte fluxo de bits JSON:
["this",true]
Você pode estender este exemplo para criar uma matriz JSON multidimensional:
$output_assembly->JSON->Data[][] = '00';
$data = $output_assembly->JSON->Data;
$data[0][] = '01';
$data[][]  = '10';
$data[1][] = '11';
A árvore de mensagens resultante é serializada para o seguinte fluxo de bits JSON:
[["00","01"],["10","11"]]

Criando uma Mensagem da Matriz JSON Usando uma Matriz Indexada PHP

Você pode criar uma matriz PHP com chaves de números inteiros contíguos e designá-la ao elemento da árvore de mensagens que você deseja para formar a matriz JSON:
    $arr = array("this", "that");
    $output_assembly->JSON->Data = $arr;
A seguinte árvore de mensagens do broker é produzida:
 (Message):JSON     = ( ['json' : 0xhhhhhh]
      (0x01001000:Array     ): Data = (  
        (0x03000000:NameValue): 0 = 'this' (CHARACTER)
        (0x03000000:NameValue): 1 = 'that' (CHARACTER)
      )
  )
Essa árvore de mensagens é serializada para o seguinte fluxo de bits JSON:
["this", "that" ] 

Criando uma Mensagem do Objeto JSON Usando uma Matriz Associativa PHP

Este exemplo mostra como criar uma matriz PHP com chaves nomeadas e designá-la ao elemento da árvore de mensagens que você deseja para formar o objeto JSON:
    $arr = array('first' => "1st", 'second' => "2nd");
    $output_assembly->JSON->Data = $arr;
A seguinte árvore de mensagens do broker é produzida:
  (Message):JSON     = ( ['json' : 0xhhhhhh]
      (0x01000000:Object  ): Data = (
        (0x03000000:NameValue): first = '1st' (CHARACTER)
        (0x03000000:NameValue): second = '2nd' (CHARACTER)
      )
  )
Você pode acessar os elementos de matriz usando o nome da chave no índice de matriz:
$var1 = $output_assembly->JSON->Data['second']; // 2nd
$var2 = $output_assembly->JSON->Data['none'];   // null
Isso é serializado para o seguinte fluxo de bits JSON:
{"first":"1st","second":"2nd"} 

Criando uma Mensagem JSON Usando uma Matriz Multidimensional de Índice de Número Inteiro PHP

Você pode designar a matriz ao elemento que conterá os dados. O nível superior e o nível aninhado da matriz PHP são matrizes indexadas por números inteiros, de modo que ambas são criadas como matrizes JSON, resultando em uma matriz JSON multidimensional:
$arr = array(array("a1","a2"),array("b1","b2"));
$output_assembly->JSON->Data = $arr;
A seguinte árvore de mensagens do broker é produzida:
 (Message):JSON     = ( ['json' : 0xhhhhhh]
      (0x01001000:Array     ): Data = (  
        (0x01001000:Array     ): 1 = (  
          (0x03000000:NameValue): 1 = 'a1' (CHARACTER)
          (0x03000000:NameValue): 2 = 'a2' (CHARACTER)
        )
        (0x01001000:Array     ): 2 = (  
          (0x03000000:NameValue): 1 = 'b1' (CHARACTER)
          (0x03000000:NameValue): 2 = 'b2' (CHARACTER)
        )
      )
  )
Essa árvore de mensagens é serializada para o seguinte fluxo de bits JSON:
[["a1","a2"],["b1","b2"]]

Criando uma Mensagem JSON Usando uma Matriz PHP Mista Associativa e Multidimensional Indexada por Número Inteiro

Você pode designar a matriz ao elemento que conterá os dados. O nível superior da matriz PHP é associativo, com nomes de chave de sequência, e por isso se torna um objeto JSON. O nível aninhado da matriz PHP está usando matrizes indexadas por números inteiros, e é criada como uma matriz JSON.
$arr = array("top1" => array("a1","a2"), "top2" => array("b1","b2"));
$output_assembly->JSON->Data = $arr;
A seguinte árvore de mensagens do broker é produzida a partir do exemplo mostrado anteriormente:
 (Message):JSON     = ( ['json' : 0xhhhhhh]
      (0x01000000:Object     ): Data = (
        (0x01001000:Array     ):top1 = ( 
          (0x03000000:NameValue): 1 = 'a1' (CHARACTER)
          (0x03000000:NameValue): 2 = 'a2' (CHARACTER)
        )
        (0x01001000:Array     ):top2 = ( 
          (0x03000000:NameValue): 1 = 'b1' (CHARACTER)
          (0x03000000:NameValue): 2 = 'b2' (CHARACTER)
        )
      )
  )
Essa árvore de mensagens é serializada para o seguinte fluxo de bits JSON:
{"top1":["a1","a2"],"top2":["b1","b2"]}

Atualizando uma Matriz JSON na Árvore Lógica

[["a1","a2"],["b1","b2"]]
A seguinte árvore de mensagens do broker é produzida a partir da entrada JSON mostrada anteriormente:
 (Message):JSON     = ( ['json' : 0xhhhhhh]
      (0x01001000:Array     ): Data = (  
        (0x01001000:Array     ): Item = (  
          (0x03000000:NameValue): Item = 'a1' (CHARACTER)
          (0x03000000:NameValue): Item = 'a2' (CHARACTER)
        )
        (0x01001000:Array     ): Item = (  
          (0x03000000:NameValue): Item = 'b1' (CHARACTER)
          (0x03000000:NameValue): Item = 'b2' (CHARACTER)
        )
      )
  )
Você pode atualizar esta mensagem com o PHP, usando [index] no elemento que está mantendo a matriz para acessar elementos existentes, e o formato [] para criar elementos adicionais:
output_assembly->JSON->Data[0][0] = "A1";
output_assembly->JSON->Data[1][1] = "B2";
output_assembly->JSON->Data[1][] = "New3";
Esse exemplo produz a seguinte saída JSON:
[["A1","a2"],["b1","B2","new3"]]

Copiando uma subárvore de mensagens do domínio XML com elementos de repetição para uma árvore do domínio JSON e convertendo-a em uma matriz JSON usando o PHP

Você pode usar a constante PHP MB_JSON_ARRAY para testar explicitamente e configurar o tipo de matriz de um elemento da árvore de mensagens. Por exemplo, será possível usar MB_JSON_ARRAY se você estiver copiando dados da árvore de mensagens de um domínio XML para um domínio JSON, ou de um domínio JSON para um domínio XML. A seguinte entrada XML contém elementos de repetição:
<doc>
      <cats>
        <cat>thing1</cat>
        <cat>thing2</cat>
      </cats>
</doc>
A seguinte árvore de mensagens do broker é produzida pelo analisador XMLNSC:
(0x01000000:Folder):XMLNSC     = ( ['xmlnsc' : 0xhhhhhh]
      (0x01001000:Folder     ): doc = (
        (0x01001000:Folder     ): cats = (
          (0x03000000:NameValue): cat = 'thing1' (CHARACTER)
          (0x03000000:NameValue): cat = 'thing2' (CHARACTER)
        )
      )
 )
O fluxo de mensagens pode converter essa árvore de mensagens do broker em uma mensagem JSON, a ser serializada da seguinte maneira:
{"cats":["thing1","thing2"]}
Você pode transformar a mensagem usando o PHP, conforme mostrado no seguinte exemplo:
$output_assembly->JSON->Data = $input_assembly->XMLNSC->doc;
$output_assembly->JSON->Data->cats->setType(MB_JSON_ARRAY);
Essa transformação produz a seguinte árvore de mensagens, que é serializada para o formato JSON:
(Message):JSON     = ( ['json' : 0xhhhhhh]
    (0x01000000:Obejct):Data     = (
        (0x01001000:Array     ): cats = (
          (0x03000000:NameValue): cat = 'thing1' (CHARACTER)
          (0x03000000:NameValue): cat = 'thing2' (CHARACTER)
        )
     )
 )

Trabalhando com um Objeto JSON com um Nome Repetido

A especificação JSON declara que objetos JSON não devem ter nomes duplicados. Entretanto, é possível uma mensagem conter esse formato; por exemplo, na mensagem JSON a seguir, o nome cat é repetido:
{"cat":"thing1","cat":"thing2" }
O analisador JSON produz a seguinte árvore de mensagens do broker a partir da entrada JSON mostrada anteriormente:
 (Message):JSON     = ( ['json' : 0xhhhhhh]
      (0x01001000:Object     ): Data = (
        (0x03000000:NameValue): cat = 'thing1' (CHARACTER)
        (0x03000000:NameValue): cat = 'thing2' (CHARACTER)
      )
  )

Essa é uma estrutura de dados PHP inválida porque tem uma chave duplicada, que não pode existir em uma matriz associativa. Como resultado, esse formulário de dados JSON não pode ser acessado, criado ou modificado em um nó PHPCompute. Para processar esse tipo de dados JSON, o fluxo de mensagens deve usar ESQL ou Java™.

Avisos | Marcas Registradas | Downloads | Biblioteca | Suporte | Feedback

Copyright IBM Corporation 1999, 2014Copyright IBM Corporation 1999, 2014.

        
        Última atualização:
        
        Última atualização: 2015-02-28 18:30:55


Tópico de ConceitoTópico de Conceito | Versão 8.0.0.5 | bc28414