11.1.2 標準モードと拡張モードとの差異
標準モードと拡張モードとの差異を次に示します。
|
差異項目 |
標準モード |
拡張モード |
|---|---|---|
|
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ファイルを設定した場合とします。
|
入力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ファイルを設定した場合とします。
|
入力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"] ] |