機械翻訳について

JSONコンテンツ・パターン

「RESTアダプタ」を使用して、次の共通パターンをJSONコンテンツとともに実装できます。

高精度およびスケールでJSON番号を許可

高精度およびスケールのJSON数値の場合、Oracle Integrationは自動的に数値を小数点以下4桁に変換します。 この変換を防ぐには、使用しているアダプタに基づいて複数のオプションがあります。

  • 「RESTアダプタ」の場合、マッパーで「高精度数の許可」接続プロパティを設定して、高精度およびスケールでJSON番号を許可する必要があります。

    この接続プロパティのデフォルト値はfalseです。 Oracle Integrationは、デフォルトで精度スケールを4桁(10進数)に制限します。 高精度スケールの場合、このプロパティをtrueに設定します。 このプロパティ値は、未定義の精度が無限の精度を意味しないため、慎重に使用してください。


    ターゲット・ツリーには、問合せ後文字列のエントリ、フォームURLエンコーディングの使用、空のJSONオブジェクト・ペイロードの強制、絶対エンドポイントURIの強制、制御文字のスキップおよび高精度番号の許可を含む「接続プロパティ」セクションが表示されます。

  • レスポンス処理用のスキーマを提供する他のすべてのアダプタには、次のスキーマ注釈が含まれます。
    <xs:schema xmlns:nxsd="http://xmlns.oracle.com/pcbpel/nxsd" nxsd:version="JSON" nxsd:allowHighPrecisionNumbers="true">

    小数点以下10桁を超えるRESTレスポンスを受信した場合、Oracle IntegrationはそれをXMLに変換しますが、値は四捨五入しません。

    このスキーマ注釈を使用しない場合、値は小数第4位で四捨五入されます。

RESTアダプタ・リクエストがマルチパート/フォーム・データを使用して構成される場合のJSONのマップ

JSONは、「RESTアダプタ」リクエストがマルチパート/フォーム・データで構成されている場合(つまり、リクエスト・ページで「リクエストはペイロードでマルチパートです」および「マルチパート・リクエストのタイプはmultipart/form-dataで、HTMLフォーム・ペイロードがあります」のチェック・ボックスが選択されている場合)にマップできます。



JSON文字列はパラメータとして送信できます。 パラメータの名前はjsonInputParametersです。 このパラメータの値は、次に示すJSON文字列です。 値はparameterノードにマップされています。 通常、ParameterListにはパラメータのリストが含まれています。 各パラメータ名はparameter > nameに入り、その値はparameterに入ります。

JSONからXMLへの特殊文字変換

JSONペイロードにXMLで有効でない特殊文字が含まれていると、これらの文字はJSONからXMLに変換されるときに文字列に置き換えられます。

たとえば、次のJSONペイロードがあるとします : { "_id": { "$oid": "52cdef7f4bab8bd67529c6f7" } }

次に、「JSONサンプル」ペイロード形式と<<inline>>を選択して、ペイロードをコピーしてAdapter Endpoint Configuration Wizardのテキスト・フィールドに貼り付けます。

マッパーでは、フィールド$oidは文字列値_0x646c72_oidで表されます。

特殊文字と対応するXML変換文字列のリストは次のとおりです:

特殊文字 マッパーで表される変換された値
" " _0x737063_
"/" _0x736c68_
"\" _0x626c68_
":" _0x636c6e_
";" _0x73636e_
"(" _0x6c7072_
")" _0x727072_
"&" _0x616d70_
"," _0x636d61_
"#" _0x706e64_
"?" _0x717374_
"<" _0x6c7374_
">" _0x677274_
"start" _0x737472_
"@" _0x617472_
"$" _0x646c72_
"{" _0x6c6362_
"}" _0x726362_
"%" _0x706572_

空のJSONオブジェクトの送信

「RESTアダプタ」では、「空のJSONオブジェクト・ペイロードの強制」プロパティで必要に応じて、空のJSONオブジェクト({})の送信を強制できます。 一部のプロバイダには、Concurなどの特別な場合にこの要件があります。 有効な場合、このプロパティは空のJSONオブジェクトを挿入します。

このプロパティはConcurおよびOracle Logisticsによって駆動され、デフォルトでは無効になっています。

trueに設定すると、選択した動詞に関係なく、RESTコールによって{}が本文に挿入されます。 一部のサード・パーティAPIでは、これは特定のコールの要件です。 デフォルトでは、このプロパティは有効化されていません。

次のステップでは、空のJSONオブジェクトを構成する方法の概要を示します。

  1. 「RESTアダプタ」を起動接続として統合キャンバスに追加します。
    「Adapter Endpoint Configuration」ウィザードが表示されます。
  2. 「基本情報」ページで「このエンドポイントのリクエスト・ペイロードの構成」を選択します。
    構成するオプションの選択セクションで、このエンドポイントのリクエスト・ペイロードの構成オプションが選択されています

  3. リクエスト・ページで、「リクエストのペイロード形式を選択」リストから「JSONサンプル」を選択し、<<<inline>>>リンクの空のJSONオブジェクトとして{}を指定します。
    「Select the request payload format」リストから「JSON Sample」オプションが選択され、<<<inline>>>リンクが構成されています。

  4. 「RESTアダプタ」の前にあるマッパーを開きます。
  5. マッパーで「空のJSONオブジェクト・ペイロードの強制」ターゲット要素をtrueに設定します。 JavaScriptファンクションtrue()を使用します。 これはマッパーに入力できます。これを囲む必要はありません。 trueのブール値が作成されます。

JSONで要素名を値としてコピー

JSONでは、要素名を値としてコピーできます。

JSONサンプル XSLTマッピング 説明
  • 入力
    {
      "OutputCollection": {
        "Collection": [{
          "ID": 1,
          "NAME": "Name"
        },{
          "ID": 11,
          "NAME": "Name0"
        }]
      }
    }
  • 出力
    {
      "items" : [ {
        "name" : "ID",
        "value" : [ "1" ]
      }, {
        "name" : "NAME",
        "value" : [ "Name" ]
      }, {
        "name" : "ID",
        "value" : [ "11" ]
      }, {
        "name" : "NAME",
        "value" : [ "Name0" ]
      } ]
    }
<xsl:for-each select="/nstrgmpr:execute/nstrgdfl:request-wrapper/nstrgdfl:OutputCollection/nstrgdfl:Collection/*">
  <nstrgdfl:items>
    <nstrgdfl:name>
      <xsl:value-of select="name ()"/>
    </nstrgdfl:name>
    <nstrgdfl:value>
      <xsl:value-of select="current ()"/>
    </nstrgdfl:value>
  </nstrgdfl:items>
</xsl:for-each>
必要な要素の子要素を反復します。

必要に応じて名前と値を取得します。

配列内の単一要素でのJSONオブジェクトの使用

JSONオブジェクトは、配列内の単一要素で使用できます。

JSONサンプル XSLTマッピング 説明
{
  "parameters": [
    {
      "closeAction": "closeAction"
    },
    {
      "closeReason": "closeReason"
    }
  ]
}
<execute>
  <parameters>
    <closeAction>closeAction</closeAction>
  </parameters>
  <parameters>
    <closeReason>closeReason</closeReason>
  </parameters>
</execute>
JSONの配列は、XMLの繰返し要素です。

XML要素は、JSONオブジェクトのアイテムです。