JSON

JSONストリームは、JSONを扱うためのストリームです。

ストリームプロパティ

プロパティ名
インデント 出力時にインデントを行うかどうかを指定します。
はい 出力時にインデントを行います。
いいえ 出力時にインデントを行いません。
インデント文字 出力時にインデントを行う場合に、インデントに使用する文字を指定します。
<tab> タブ[0x09]
空白2文字 スペース[0x20]で2文字
空白4文字 スペース[0x20]で4文字

フィールド定義

フィールド名、データ型、配列、表示名を定義します。

フィールド名 JSONオブジェクトのキーを指定します。
データ型 String、Boolean、Integer、Double、Decimalのいずれか。
Binary、DateTimeは指定できません。
配列 キーに対応する値が配列となるかどうか指定します。
表示名 マッパーでの表示名を指定します。フィールド名であるキー名がわかりにくい場合、マッピングウィンドウで参照するフィールド名を表示名で表示することにより、わかりやすくマッピングを行うことができます。

フィールドの階層を移動するには、移動したいフィールドを選択し、右クリックして表示されるメニューから「下の枝に移動」「上の枝に移動」をクリックします。上位階層のフィールドを親フィールド、下位階層のフィールドを子フィールドと呼びます。

注意

  • 便宜上JSONのフィールド定義の最上位は「root」となっていますが、これは出力には含まれません。
  • 最上位である「root」フィールドの「配列」の値が「はい」の場合、最上位が配列であるJSONが出力されます。
  • 次の3つのフィールドのデータ型の指定は無視されます。
    • 最上位である「root」フィールド
    • 「配列」の値が「はい」のフィールド
    • 子フィールドが定義されているフィールド

フィールド名

フィールド名はその階層でのキーの名前です。

原則JSON仕様に準ずる文字を使用できますが、フィールド名に「/」を含めることはできません。

フィールドの値

フィールドの値は、「フィールド名」で表されるキーに対応する値となります。つまり最終的に文字列にした場合には、

"フィールド名": 値
という形式になります。

「データ型」がStringの場合、値は「"」(ダブルクォート)で囲まれます。もしもフィールドに「null」がマッピングされた場合は「"フィールド名": null」とはならず、そのフィールド自体が出力されなくなります。(「"key": undfined」と同義)

子フィールドを持つフィールドの値はその値を表すJSON文字列になります。

JSONフィールド定義の例

フィールド名データ型配列
rootStringいいえ
  住所録Stringはい
    番号Integerいいえ
    名前Stringいいえ
      姓Stringいいえ
      名Stringいいえ

上記のフィールド定義による出力例

{
	"住所録": [
		{
			"番号": 1,
			"名前": {
				"姓": "佐藤",
				"名": "渚"
			}
		},
		{
			"番号": 2,
			"名前": {
				"姓": "鈴木",
				"名": "かおる"
			}
		}
	]
}

配列の値

配列が子フィールドを持たない場合、配列の値として同じ値が存在していても省略されることなくすべての値が出力されます。例えば、次のようなレコードを考えます。

都道府県 氏名
東京 佐藤渚
神奈川 鈴木かおる
大阪 田中ひかる
東京 斉藤はじめ
上記の都道府県のフィールドをJSONの都道府県フィールドにマッピングした場合の出力は次のようになります。
"都道府県": ["東京", "神奈川", "大阪", "東京"]

配列の最初と最後に"東京"が出力されます。このように重複する値は省略されません。

それに対して、配列が子フィールドを持つ場合は、重複した値は省略されます。例えば、マッピングした結果、配列の要素が次のように2個とも同じである場合、

"住所": [
    {
        "都道府県": "東京",
        "氏名": "佐藤渚"
    },
    {
        "都道府県": "東京",
        "氏名": "佐藤渚"
    }
]

JSONストリームの出力では重複した値は省略されて配列の要素は1個だけになります。

"住所": [
    {
        "都道府県": "東京",
        "氏名": "佐藤渚"
    }
]

配列の要素が0個の場合、空の配列つまり「"フィールド名":[]」とはならず、そのフィールド自体が出力されなくなります。

レコード数

ストリームのレコード数は、配列フィールドの有無によって以下のように決まります。

この仕様はXMLの場合とほぼ同様です。

▲ このページのトップへ