2.5.1.2 JSONデータ・マッピング

次の表に、様々なOracle Tuxedoバッファ・タイプとJSONとの変換を示します:

表2-13 JSONデータ・マッピング

Oracle Tuxedoバッファ・タイプ JSON同等/例 ノート
STRING <buffer content> -
CARRAY <binary buffer content> -
MBSTRING <Multi-byte string> UTF-8以外のエンコーディングを転送するには、SALTDEPLOY構成のenableMultiEncodingプロパティをtrueに設定する必要があります。
XML <XML fragment as-is> UTF-8以外のエンコーディングを転送するには、SALTDEPLOY構成のenableMultiEncodingプロパティをtrueに設定する必要があります。
X_C_TYPE VIEW/VIEW32と同じ -
X_COMMON VIEW/VIEW32と同じ -
X_OCTET CARRAYと同じ -
VIEW/VIEW32 {'<fieldname>':'<fieldcontent>', '<fieldname>':'<fieldcontent>'}

ネスト可能

{'<fieldname>':{'<fieldname>':'<fieldcontent>'}}

JSONには次のプリミティブ型があります:
  • ブール(true/false)
  • 数値(intまたはdouble float)
  • 文字列

VIEW/VIEW32フィールド・タイプは次のようにマップされます(Oracle Tuxedoタイプ: JSONタイプ):

フィールド名マッピングの詳細は、VIEW/VIEW32の考慮事項と例を参照してください。

一部のタイプは、プリミティブ型(long longlong double)で表現される場合は切り捨てられます。その場合、それらはJSON文字列としてレンダリングされます。

-
  • short: 数値
  • int: 数値
  • long: 数値
  • float: 数値
  • double: 数値
  • char: 文字列
  • string: 文字列
  • carray: 文字列(base64エンコード)
  • bool: ブール
  • unsigned char: 文字列
  • signed char: 文字列
  • wchar_t*またはwchar_t: 文字列
  • unsigned int: 数値
  • unsigned long: 数値
  • long long: 文字列(表の下のノートを参照)
  • unsigned long long: 文字列(ノートを参照)
  • long double: 文字列(表の下のノートを参照)
  • mbstring: 文字列
  • view32: ネストされたJSONレコード
-
FML/FML32 {'<fieldname>':'<fieldcontent>', '<fieldname>':'<fieldcontent>'}

ネスト可能、FML32のみ:

{'<fieldname>':{'<fieldname>':'<fieldcontent>'}}

FML/FML32フィールド・タイプは次のようにマップされます(Oracle Tuxedoタイプ: JSONタイプ):

  • FLD_SHORT: 数値
  • FLD_LONG: 数値
  • FLD_FLOAT: 数値
  • FLD_DOUBLE: 数値
  • FLD_CHAR: 文字列またはJSON trueの文字TまたはJSON falseのF
  • FLD_STRING: 文字列
  • FLD_CARRRAY: 文字列(base64エンコード)
  • FLD_MBSTRING: 文字列
  • FLD_VIEW32: JSONネスト・レコード、個々のタイプについては、VIEW/VIEW32マッピングを参照
  • FLD_FML32: JSONオブジェクト

ネストFLD_VIEW32: ビュー・サブタイプの名前は組込みVIEW32の名前である必要があります。

例:

VIEW32 example.v定義ファイル:

VIEW v32example

char flag1 - 1 - - -

string str - 1 100 - -

JSONコンテンツ(EVIEW32FLD_VIEW32 fml32タイプです):

{"EVIEW32" :

{"v32example":

{"flag1":"x",

"str":"somestring"}

}

}

RECORD {'<fieldname>':'<fieldcontent>', '<fieldname>':'<fieldcontent>'}

ネスト可能

{'<fieldname>':{'<fieldname>':'<fieldcontent>'}}

生成されるCOBOLフィールド型は次のようにマップされます(Tuxedo型: JSON型):

生成されるCOBOL型:

  • RECORD: nested JSON record
  • COMP-1: Number
  • COMP-2: Number
  • S9(18): Number
  • 9(18): Number
  • S9(9): Number
  • 9(9): Number
  • S9(4): Number
  • S9(10)V9(10)COMP-3L: Number
  • X(1024): String
  • @binary=true: String
-

ノート:

非構造化バッファ・タイプ(STRINGCARRAYX_OCTETMBSTRING)はデータをJSONオブジェクトとしてラップしません。データはそのまま転送されます。

JSONでは、すべての浮動小数点型はXMLとは異なり内部的に処理されます。XMLでの浮動小数点の変換では、JSONの類似の変換に比べて精度が多少失われます。これは現時点での制約です。