JSON
JSONストリームは、JSONを扱うためのストリームです。
ストリームプロパティ
| プロパティ名 | 値 | ||||
|---|---|---|---|---|---|
| インデント | 出力時にインデントを行うかどうかを指定します。
|
フィールド定義
フィールド名、データ型、配列、表示名を定義します。
| フィールド名 | JSONオブジェクトのキーを指定します。 |
|---|---|
| データ型 | String、Boolean、Integer、Double、Decimalのいずれか。 Binary、DateTimeは指定できません。 |
| 配列 | キーに対応する値が配列となるかどうか指定します。 |
| 表示名 | マッパーでの表示名を指定します。フィールド名であるキー名がわかりにくい場合、マッピングウィンドウで参照するフィールド名を表示名で表示することにより、わかりやすくマッピングを行うことができます。 |
フィールドの階層を移動するには、移動したいフィールドを選択し、右クリックして表示されるメニューから「下の枝に移動」「上の枝に移動」をクリックします。上位階層のフィールドを親フィールド、下位階層のフィールドを子フィールドと呼びます。
注意
- 便宜上JSONのフィールド定義の最上位は「root」となっていますが、これは出力には含まれません。
- 最上位である「root」フィールドの「配列」の値が「はい」の場合、最上位が配列であるJSONが出力されます。
- 次の3つのフィールドのデータ型の指定は無視されます。
- 最上位である「root」フィールド
- 「配列」の値が「はい」のフィールド
- 子フィールドが定義されているフィールド
フィールド名
フィールド名はその階層でのキーの名前です。
原則JSON仕様に準ずる文字を使用できますが、フィールド名に「/」を含めることはできません。
フィールドの値
フィールドの値は、「フィールド名」で表されるキーに対応する値となります。つまり最終的に文字列にした場合には、
"フィールド名": 値という形式になります。
「データ型」がStringの場合、値は「"」(ダブルクォート)で囲まれます。もしもフィールドに「null」がマッピングされた場合は「"フィールド名": null」とはならず、そのフィールド自体が出力されなくなります。(「"key": undfined」と同義)
子フィールドを持つフィールドの値はその値を表すJSON文字列になります。
JSONフィールド定義の例
| フィールド名 | データ型 | 配列 |
|---|---|---|
| root | String | いいえ |
| 住所録 | String | はい |
| 番号 | Integer | いいえ |
| 名前 | String | いいえ |
| 姓 | String | いいえ |
| 名 | String | いいえ |
上記のフィールド定義による出力例
{
"住所録": [
{
"番号": 1,
"名前": {
"姓": "佐藤",
"名": "渚"
}
},
{
"番号": 2,
"名前": {
"姓": "鈴木",
"名": "かおる"
}
}
]
}
レコード数
ストリームのレコード数は、配列フィールドの有無によって以下のように決まります。
- フィールド定義中に配列フィールドが1つもない場合、レコード数は1になります。
- 配列フィールドが1つだけある場合、レコード数はその配列の要素数になります。
- 配列フィールドが階層関係を持たずに複数ある場合、レコード数はそれぞれの要素数の直積になります。
- 配列フィールドが階層関係を持って複数ある場合は、それぞれの配列のレコード数は下位のレコード数となり、全体のレコード数はその総和となります。ただし、マッパーではマッピングに使用されているフィールドだけでフィールド定義が再構成されるので、ストリームのレコード数とマッパーで使用されるレコード数が異なる場合があります。
この仕様はXMLの場合とほぼ同様です。