メッセージ出力フォーマット

新しい Web サービス HTTP 制御パラメーターの追加によって、REST に類似した HTTP バインディングで出力メッセージを生成する際の出力フォーマットが指定できるようになりました。

オプションの outputFormat 制御パラメーターを使用して、Web サービスで実行する操作の出力メッセージのフォーマットを指定できます。Web サービスをデプロイする際にこの outputFormat パラメーターに値を指定すると、その Web サービスの操作が実行されるたびにこのパラメーターで指定された出力フォーマットが使用されるようになります。デプロイ時にこのパラメーターに値が指定しなかった場合は、Web サービスの操作が実行される際に出力フォーマットを指定できます。実行時にも出力フォーマットが指定されない場合は、デフォルトの出力フォーマットが使用されます。

デフォルトの出力フォーマットは HTTP バインディングによって決まります (表 1)。

表 1. 各 HTTP バインディングのデフォルト出力フォーマット
バインディング デフォルト出力フォーマット MIME タイプ
HTTP GET XML text/xml
HTTP POST (URL エンコード) XML text/xml
HTTP POST (xml) XML text/xml
HTTP POST (json) JSON application/json
出力フォーマットの例外
SOAP
SOAP バインディングの場合は、出力フォーマットの指定はできません。 出力フォーマットは常に XML です。
XSL 出力
出力メッセージの変換に XSL が割り当てられている操作では、outputFormat 制御パラメーターは無視されます。 この場合、メッセージのフォーマットと MIME タイプはいずれも XSL によって決定されます。

デフォルト JSON 出力フォーマット

デフォルト JSON 出力フォーマットは、www.json.org の JSON の仕様に従います。

列名
列名は JSON オブジェクト名になります。
データ・タイプ
JSON 出力フォーマットには、XML 出力フォーマットと同じデータ・タイプ変換が使用されます。
  • 日付/時刻値は、XSD の日付/時刻フォーマットを使用して JSON ストリングとして表示されます。JSON には日時/時刻のフォーマットは存在しません。
  • バイナリー値は Base64 エンコード方式の JSON ストリングになります。
  • 数値はすべて JSON の数値にマップされます。
  • SQL NULL は JSON のヌルにマップされます。
  • XML は JSON ストリングとして埋め込まれます。
  • SQL Boolean は JSON のブール値にマップされます。
操作タイプ別の出力フォーマット
ここでは、操作タイプに基づいて異なるフォーマットについて説明します。
SQL SELECT (結果セット)
結果セットは JSON 配列として返されます。以下は、複数の従業員に関する情報が返される際の結果セットの例です。
{"getEmployeesResponse":
    [
        {
        "EMPNO":"000010",
        "FIRSTNME":"CHRISTINE",
        "MIDINIT":"I",
        "LASTNAME":"HAAS",
        "WORKDEPT":"A00",
        "PHONENO":"3978",
        "HIREDATE":"1995-01-01Z",
        "JOB":"PRES    ",
        "EDLEVEL":18,
        "SEX":"F",
        "BIRTHDATE":"1963-08-24Z",
        "SALARY":96800.00,
        "BONUS":21113.19,
        "COMM":4220.00},
        {
        "EMPNO":"000020",
        "FIRSTNME":"MICHAEL",
        "MIDINIT":"L",
        "LASTNAME":"THOMPSON", ...}
    ]
}
操作を定義する際に「照会では 1 つの行しかフェッチしない」チェック・ボックスが選択された場合は、JSON 配列が返される代わりに照会の最初の行に対応する JSON オブジェクトが返されます。以下のコードは、照会の最初の行が JSON オブジェクトとして返される例です。
{"getEmployeesResponse":
    {
    "EMPNO":"000010",
    "FIRSTNME":"CHRISTINE",
    "MIDINIT":"I",
    "LASTNAME":"HAAS",
    "WORKDEPT":"A00",
    "PHONENO":"3978",
    "HIREDATE":"1995-01-01Z",
    "JOB":"PRES    ",
    "EDLEVEL":18,
    "SEX":"F",
    "BIRTHDATE":"1963-08-24Z",
    "SALARY":96800.00,
    "BONUS":21113.19,
    "COMM":4220.00}
}
SQL UPDATE (INSERT、DELETE、または MERGE) (更新カウント)
以下のコードは、更新カウントを伴う SQL UPDATE 操作の JSON メッセージ・フォーマットの例です。
{"updateEmployeeResponse":{"updateCount":1}}
ストアード・プロシージャー呼び出し
以下のコードは、ストアード・プロシージャー呼び出しから返される各行セットの JSON 配列を示しています。
{"BONUS_INCREASEResponse":
    {
    "P_DEPTSWITHOUTNEWBONUSES":"",
    "P_COUNTDEPTSVIEWED":8,
    "P_COUNTDEPTSBONUSCHANGED":8,
    "P_ERRORMSG":"",
    "rowset":
        [
            {
            "WORKDEPT":"A00",
            "EMPNO":"000010",
            "BONUS":25546.95},
            {
            "WORKDEPT":"A00",
            "EMPNO":"000110",
            "BONUS":22992.12},
            {
            "WORKDEPT":"A00",
            "EMPNO":"000120",
            ...}
        ],
    "rowset2":
        [
            {
            "WORKDEPT":"A00",
            "EMPNO":"000010",
            "BONUS":25546.95},
            {
            "WORKDEPT":"A00",
            "EMPNO":"000110",
            "BONUS":22992.12},
            {
            "WORKDEPT":"A00",
            "EMPNO":"000120",
            ...}
        ],
        ...
    }
}
XQuery
XQuery からの結果は JSON 配列として返されます。以下は、JSON 配列として返された XQuery 結果の例です。
{"testXQueryResponse":
    [
        "Basic Snow Shovel, ",
        "A Deluxe Snow Shovel ...",
        ...
    ]
}
操作を定義する際に「照会では 1 つの行しかフェッチしない」チェック・ボックスが選択された場合は、JSON 配列が返される代わりに XQuery 結果の最初の行に対応する JSON オブジェクトが返されます。以下のコードは、XQuery 結果の最初のストリング値が JSON オブジェクトとして返される例です。
{"testXQueryResponse":
    "Basic Snow Shovel, "
}

フィードバック