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

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

JSON パーサーおよびドメイン

JSON (JavaScript Object Notation) は、JavaScript プログラミング言語のサブセットに基づく単純データ交換フォーマットです。

WebSphere® Message Broker は JSON ドメインをサポートします。 JSON ドメイン内のメッセージは、JSON パーサーおよびシリアライザーによって処理されます。 JSON パーサーは JSON 文法を使用してビット・ストリームを解釈し、 ブローカー内に対応する JSON ドメイン論理メッセージ・ツリーを生成します。 出力のためにデータを処理する際に、JSON シリアライザーは、 JSON ドメイン論理メッセージ・ツリーから JSON フォーマット済みビット・ストリームを生成します。

JSON メッセージ・モデルはブローカーによってサポートされていないため、 JSON パーサーおよびシリアライザーはメッセージ妥当性検査をサポートしません。

WebSphere Message Broker フィックスパックで使用可能になる機能を有効にするには、mqsichangebroker コマンドで -f パラメーターを使用します。 詳しくは、mqsichangebroker コマンドを参照してください。

JSON は言語に依存しないテキスト形式で、2 つの構造に基づいています。 オブジェクトと配列はネストが可能です。

JSON メッセージ構造について詳しくは、JSON メッセージの詳細を参照してください。

JSON データ・ストリームは、ブローカーでサポートされる任意のコード化文字セット ID (CCSID) から解析できます。 データ・ストリームの解析は、トランスポートにより定義されている CCSID に従って (JSON パーサーが入力ノードまたは要求ノードから呼び出される場合)、または CREATE 関数呼び出しの PARSE 節の CCSID パラメーターにより定義されている CCSID に従って行われます。 CCSID が指定されていない場合、あるいは値が 0 に設定されている場合、パーサーは、以下の Unicode エンコードが使用されているかどうかを (データ・ストリームの最初の数バイトを調べて) 検出しようとします。

UTF-* CCSID が明示的に指定されている場合、JSON パーサーはデータ・ストリームの先頭に置かれた対応するバイト・オーダー・マーク (BOM) を許容します。

JSON データ・ストリームは解析され、論理メッセージ・ツリーで、JSON パーサー・ルートの下にある Data エレメントの下に置かれます。 論理ツリー構造は、JSON メッセージの例に示されています。

Data エレメントは、ESQL から JSON.Data として、Java™ から JSON/Data として、PHP から JSON->Data として、または XPath から $Body/Data としてアクセスおよび操作できます。 ビット・ストリームが JSON 文法に従ってフォーマットされていない場合、JSON パーサーはエラーを出します。

JSON シリアライザーは、メッセージ・ツリーを JSON フォーマットのデータ・ストリームに直列化します。 CCSID は、ブローカー・プロパティー・ツリー、またはメッセージ・アセンブリー内のトランスポート・ヘッダーによって定義できます。 CCSID が定義されていない場合のデフォルトとして、HTTP ノードを除くすべてのノードで、シリアライザーはキュー・マネージャーのデフォルト CCSID を使用します。HTTP ノードの場合はデフォルトで UTF-8 エンコードが使用されます。

JSON シリアライザーが ASBITSTREAM 関数呼び出しで起動されると、CCSID は CCSID パラメーターによって定義されます。 CCSID パラメーターがない場合、または値を 0 に設定すると、JSON シリアライザーはデフォルトで UTF-8 エンコードを使用します。

JSON パーサーでメッセージを処理するには、メッセージ・フローの関連ノードで、 メッセージ・ドメイン として「JSON」を選択します。 Mapping ノード および XSLTransform ノードは、 JSON ドメインをサポートしません。

JSON メッセージ・ツリーを直列化する場合、ブローカーは HTTP Content-Type ヘッダーを application/json に設定します。ただし、メッセージ・フローによって明示的に値が設定されている場合は別です。

JSON オブジェクトは、ブローカー・メッセージ・ツリー内で、NameValue エレメントのシーケンスとしてモデル化されます。 パーサーは、ビット・ストリームでメンバーを検出した順序と同じ順序でメッセージ・ツリーを作成します。 シリアライザーは、オブジェクト・メンバーをツリーと同じ順序でビット・ストリームに書き込みます。

JSON 配列は、ブローカー・メッセージ・ツリー内で、JSON パーサー固有のタイプの JSON.Array フラグおよび順序付きの子を持つ Name エレメントとしてモデル化されます。 子は、以下のいずれかのタイプの配列になります。

JSON メッセージの例

以下の例は、 単純な JSON メッセージを示しています。

{
    "name" : "John Doe",
    "age" : -1.0,
    "known" : false,
    "address" : { "street" : null,
                  "city" : "unknown" },
    "belongings" : ["item1", "item2", "item3"]
}

この JSON 入力によって、以下のブローカー論理メッセージ・ツリーが生成されます。

(0x01000000:Object):JSON            = ( ['json' : 0xd55fc8]
  (0x01000000:Object):Data = (
    (0x03000000:NameValue):name       = 'John Doe' (CHARACTER)
    (0x03000000:NameValue):age        = -1E+0 (FLOAT)
    (0x03000000:NameValue):known      = FALSE (BOOLEAN)
    (0x01000000:Object   ):address    = (
      (0x03000000:NameValue):street = NULL
      (0x03000000:NameValue):city   = 'unknown' (CHARACTER)
    )
    (0x01001000:Array    ):belongings = (
      (0x03000000:NameValue):Item = 'item1' (CHARACTER)
      (0x03000000:NameValue):Item = 'item2' (CHARACTER)
      (0x03000000:NameValue):Item = 'item3' (CHARACTER)
    )
  )
)
特記事項 | 商標 | ダウンロード | ライブラリー | サポート | フィードバック

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

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


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