Hitachi

Cosminexus V11 BPM/ESB基盤 サービスプラットフォーム 開発ガイド 基本開発編


11.1.2 標準モードと拡張モードとの差異

標準モードと拡張モードとの差異を次に示します。

表11‒1 標準モードと拡張モードとの差異

差異項目

標準モード

拡張モード

JSON形式データの制限

あり

なし

変換結果※1

XMLデータの可読性が低い

XMLデータの可読性が高い

データタイプ

維持されない

維持される

XMLスキーマ※2

変換時に不要

変換時に必要

変換結果※3

JSON変換ツールで確認が必要

明確

可逆変換

できない

できる4

注※1

標準モードでは,JSON配列内の要素(無名要素)のタグ名にJSON-XML変換定義ファイルで指定した固定名称が使用されますが,拡張モードではXMLスキーマで定義した要素タグが使用され,変換したXMLデータに任意の要素名を付与できます。

注※2

標準モードでは,cscjson2xsdコマンドで生成するXSDファイルは標準モードの変換結果に合わせたXSDファイルとなりますが,拡張モードでは,JSONデータからXSDファイルを参照して,XMLスキーマに従った変換が行われます。

拡張モードでは,XSDファイルに定義されていない要素が出現した場合,該当する要素の変換をスキップして,変換処理を続行することができます。

注※3

標準モードのJSON-XML変換は,OSSに依存していますが,拡張モードのJSON-XML変換は,マニュアルの記載に従って変換されます。

注※4

Fixed要素やdefault属性など,一部の設定は可逆変換ができません。

標準モードと拡張モードとの変換結果の差異を次に示します。

〈この項の構成〉

(1) JSON→XML変換の変換結果

標準モードと拡張モードのJSON→XML変換の変換結果の例を次に示します。ただし,拡張モードの変換結果は,適切なXSDファイルを設定した場合とします。

表11‒2  JSON→XML変換の変換結果の例

入力JSONデータ

標準モードの変換結果

拡張モードの変換結果

false

変換できない

<root>false</root>

null

変換できない

<root xsi:nill="true"/>

true

変換できない

<root>true</root>

123

変換できない

<root>123</root>

"abc"

変換できない

<root>abc</root>

[

 "abc",

 "def",

 true

]

<csc-array>

 <csc-element_csc-array>

  <csc-simple>abc</csc-simple>

 </csc-element_csc-array>

 <csc-element_csc-array>

  <csc-simple>def</csc-simple>

 </csc-element_csc-array>

 <csc-element_csc-array>

  <csc-simple>true</csc-simple>

 </csc-element_csc-array>

</csc-array>

<root>

 <unnamed_1>abc</unnamed_1>

 <unnamed_1>def</unnamed_1>

 <unnamed_2>def</unnamed_2>

</root>

配列要素の型ごとに異なる要素タグに変換します。

{

 "field1":"abc",

 "field2":"def"

}

<csc-object>

 <field1>abc</field1>

 <field2>def</field2>

</csc-object>

<root>

 <field1>abc</field1>

 <field2>def</field2>

</root>

{

 "<fld>":"abc"

}

変換できない

<root>

 <_fld_>abc</_fld_>

</root>

[

 true,

 "def",

 {

  "field":"abc"

 }

]

[図データ] 

[図データ] 

[図データ] 

[図データ] 

<csc-array>

 <csc-element_csc-array>

  <csc-simple>true</csc-simple>

 </csc-element_csc-array>

 <csc-element_csc-array>

  <csc-simple>def</csc-simple>

 </csc-element_csc-array>

 <csc-element_csc-array>

  <field>abc</field>

 </csc-element_csc-array>

</csc-array>

<root>

 <unnamed_1>true</unnamed_1>

 <unnamed_2>def</unnamed_2>

 <unnamed_3>

  <field>abc</field>

 </unnamed_3>

</root>

[図データ] 

[図データ] 

[図データ] 

[図データ] 

注 拡張モードの変換結果の<unnamed_?>などの要素タグは,XMLスキーマを編集し,適切な要素名に変更できます。

(2) XML→JSON変換の変換結果

標準モードと拡張モードのXML→JSON変換の変換結果の例を次に示します。ただし,拡張モードの変換結果は,適切なXSDファイルを設定した場合とします。

表11‒3  XML→JSON変換の変換結果の例

入力XMLデータ

標準モードの変換結果

拡張モードの変換結果

<root>false</root>

{"#text":"false"}

false

<root>

<field>false</field>

</root>

{"field":"false"}

{"field":false}

<root>123</root>

{"#text":"123"}

123

<root>

<field>123</field>

</root>

{"field":"123"}

{"field":123}

<root>abc</root>

{"#text":"abc"}

"abc"

<csc-object>abc</csc-object>

["abc"]

"abc"

<root>

<field>abc</field>

</root>

{"field":"abc"}

{"field":"abc"}

<root>

 <d1>value1</d1>

 <d1>value2</d1>

</root>

{"d1":["value1","value2"]}

アンラップ変換の場合{"d1":["value1","value2"]}

ラップ変換の場合

["value1","value2"]

<csc-array>

  <csc-element_csc-array>

    <csc-simple>value1</csc-simple>

  </csc-element_csc-array>

  <csc-element_csc-array>

    <csc-simple>value2</csc-simple>

  </csc-element_csc-array>

</csc-array>

[図データ] 

[図データ] 

[図データ] 

[図データ] 

["value1","value2"]

csc-arrayにnamespaceを指定した場合は

{

 "csc-element_csc-array":[

 {"csc-simple":"value1"},

 {"csc-simple":"value2"}

]

}

[

 "csc-element_csc-array":[

  {"csc-simple":"value1"},

  {"csc-simple":"value2"}

 ]

]

または

[

  {"csc-simple":"value1"},

  {"csc-simple":"value2"}

]

または

[

  ["value1"],

  ["value2"]

]