WebSphere Message Broker バージョン 8.0.0.5 オペレーティング・システム: AIX、HP-Itanium、Linux、Solaris、Windows、z/OS

製品の最新バージョンについては、IBM Integration Bus バージョン 9.0 をご覧ください。

JSON メッセージの作成

論理メッセージ・ツリーで、JSON パーサー・ルートにより所有されている Data エレメント下にエレメントを作成することにより、JSON オブジェクト、JSON 配列、またはその両方を含む JSON メッセージ・データを作成できます。

JSON メッセージは、匿名オブジェクトまたは匿名配列のいずれかを、データのルートとして持つことができます。 論理メッセージ・ツリー内で JSON 配列を作成するときに、タイプが JSON パーサー・エレメント・タイプ JSON.Array に設定されているツリー・エレメント内に JSON 配列名が配置されます。

JSON 配列内の項目は、必須の値が指定された、JSON.Array エレメントの子である NameValue エレメントとして、論理ツリー内に配置されます。 JSON 配列項目は匿名であるため、これらの配列項目エレメントの名前は、JSON シリアライザーには使用されません。 ただし、JSON パーサーが使用する名前との整合性を保つために、配列項目エレメントを定義する際には Item という名前を使用してください。

JSON オブジェクト・メッセージの作成

次の例では、ルート・レベルにオブジェクトを配置する { --- } という形式でフォーマット設定された JSON メッセージを作成する方法を示します。

この例は、1 対の名前と値のペアを持つ単純な JSON オブジェクト・メッセージの作成方法を示します。
{"Message":"Hello World"}
以下の ESQL コードを使用して、メッセージを作成できます。
SET OutputRoot.JSON.Data.Message = 'Hello World';
以下の Java™ コードを使用してメッセージを作成することもできます。
MbElement outRoot = 
   outMessage.getRootElement();
MbElement outJsonRoot = 
   outRoot.createElementAsLastChild(MbJSON.PARSER_NAME);
MbElement outJsonData = 
   outJsonRoot.createElementAsLastChild(MbElement.TYPE_NAME, MbJSON.DATA_ELEMENT_NAME, null);
MbElement outJsonTest = 
   outJsonData.createElementAsLastChild(MbElement.TYPE_NAME_VALUE, "Message", "Hello World");
以下の PHP コードを使用してメッセージを作成することもできます。
$output_message->{MB_JSON_PARSER_NAME}->{MB_JSON_DATA_ELEMENT_NAME}->Message = 'Hello World';
次の例は、この例から生成されるブローカー・メッセージ・ツリーを示しています。
Message: ( ['json' : 0xc552990]
  (0x01000000:Object   ):Data    = (
    (0x03000000:NameValue):Message = 'Hello World' (CHARACTER)
 )

JSON 配列メッセージの作成

次の例では、ルート・レベルに配列を配置する [ --- ] という形式でフォーマット設定されたメッセージを作成する方法を示します。

この例は、JSON 配列メッセージの作成方法を示します。
["valueA","valueB"]
以下の ESQL コードを使用して配列を作成することもできます。
CREATE FIELD OutputRoot.JSON.Data IDENTITY (JSON.Array)Data;
CREATE LASTCHILD OF OutputRoot.JSON.Data TYPE NameValue NAME 'Item' VALUE 'valueA';
CREATE LASTCHILD OF OutputRoot.JSON.Data TYPE NameValue NAME 'Item' VALUE 'valueB';
以下の Java コードを使用して配列を作成することもできます。
MbElement outJsonRoot =
   outRoot.createElementAsLastChild("JSON");
MbElement outJsonData =
   outJsonRoot.createElementAsLastChild(MbJSON.ARRAY, "Data", null);
   outJsonData.createElementAsLastChild(MbElement.TYPE_NAME_VALUE,
                                        "Item", "valueA");
   outJsonData.createElementAsLastChild(MbElement.TYPE_NAME_VALUE,
                                        "Item", "valueB");
以下の PHP コードを使用して配列を作成することもできます。
$output_assembly->JSON->Data[] = array("valueA","valueB");

PHP 配列について詳しくは、JSON での PHP 配列の使用を参照してください。

次の形式のメッセージが、ブローカー論理メッセージ・ツリーに作成されます。
Message: ( ['json' : 0xc552990]
  (0x01001000:Array     ):Data    = (
    (0x03000000:NameValue):Item = 'valueA' (CHARACTER)
    (0x03000000:NameValue):Item = 'valueB' (CHARACTER)
 )

JSON オブジェクト配列メッセージの作成

次の例では、ルート・レベルにオブジェクトの配列を配置する [{--},{--},...] という形式でフォーマット設定されたメッセージを作成する方法を示します。

この例は、JSON オブジェクト配列メッセージの作成方法を示しています。
[{"Nam1":"val1","Num1":1},{"Nam2":"val2","Num2":2}]
以下の ESQL コードを使用して配列を作成することもできます。
CREATE FIELD OutputRoot.JSON.Data IDENTITY(JSON.Array)Data;
SET OutputRoot.JSON.Data.Item[1].Nam1 = 'val1';
SET OutputRoot.JSON.Data.Item[1].Num1 = 1;
SET OutputRoot.JSON.Data.Item[2].Nam2 = 'val2'
SET OutputRoot.JSON.Data.Item[2].Num2 = 2;
以下の Java コードを使用して配列を作成することもできます。
MbElement jsonData =    
   outMessage.getRootElement().createElementAsLastChild(MbJSON.PARSER_NAME).createElementAsLastChild
                                        (MbJSON.ARRAY,MbJSON.DATA_ELEMENT_NAME, null);
MbElement jsonFirstArrayItem = 
   jsonData.createElementAsLastChild(MbElement.TYPE_NAME, MbJSON.ARRAY_ITEM_NAME, null);
   jsonFirstArrayItem.createElementAsFirstChild(MbElement.TYPE_NAME_VALUE, "Nam1", "val1");
   jsonFirstArrayItem.createElementAsLastChild(MbElement.TYPE_NAME_VALUE, "Num1", new Integer(1));

MbElement jsonSecondArrayItem = 
   jsonData.createElementAsLastChild(MbElement.TYPE_NAME, MbJSON.ARRAY_ITEM_NAME, null);
   jsonSecondArrayItem.createElementAsFirstChild(MbElement.TYPE_NAME_VALUE, "Nam2", "val2");
   jsonSecondArrayItem.createElementAsLastChild(MbElement.TYPE_NAME_VALUE, "Num2", new Integer(2));
次の形式のメッセージが、ブローカー論理メッセージ・ツリーに作成されます。
Message: ( ['json' : 0xc673900]
  (0x01001000:Array):Data = (
    (0x01000000:Object):Item = (
      (0x03000000:NameValue):nam1 = 'val1' (CHARACTER)
      (0x03000000:NameValue):num1 = 1 (INTEGER)
    )(0x01000000:Object):Item = (
      (0x03000000:NameValue):nam2 = 'val2' (CHARACTER)
      (0x03000000:NameValue):num2 = 2 (INTEGER)
    )
  )
)
特記事項 | 商標 | ダウンロード | ライブラリー | サポート | フィードバック

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

        
        最終更新:
        
        最終更新: 2015-02-28 17:48:40


概念トピック概念トピック | バージョン 8.0.0.5 | bc28411_