配列フィールド

JSON 配列フィールドの構造と、JSON (RESTful) サービス インターフェイス オペレーションを定義するときにその構造に対応する方法について説明します。

JSON 配列フィールドの定義は、SOAP または COBOL 配列フィールドとは多少異なります。SOAP では、COBOL と同様に、配列はゼロ以外の occurs 属性が定義されたアイテムで構成され、そのようなアイテムはメッセージ内で複数回繰り返されます。たとえば、SOAP サービス インターフェイス オペレーションのコンテキストでは、group1 という名前のインターフェイス フィールド グループ配列の occurs の値が 2 の場合、SOAP メッセージで次のように表されます。

<group1>
  <field1>someValue1</field1>
  <field2>someValue2</field2>
</ group1>
< group1>
  <field1>someValue3</field1>
  <field2>someValue4</field2>
</ group1>

一方、JSON 配列の構文はこれとは異なります。JSON では、SOAP とは異なり、同じアイテムの複数のインスタンスを定義する代わりに、繰り返しの値を含む単一の配列アイテムを定義します。JSON サービス インターフェイス オペレーションのコンテキストでは、上記の SOAP の構文で示したインターフェイス フィールド グループ配列が次のように表されます。

"group1":
[
  {
   "field1":"someValue1",
   "field2":"someValue2"
  },
  {
   "field1":"someValue3",
   "field2":"someValue4"
  }
]

JSON の構文では、"group1" は繰り返されず 1 回だけ表示されます。この中に、個々の配列要素の値が中かっこ ({}) で囲まれた JSON オブジェクトの繰り返しとして表示されます。

この例の SOAP 出力のように、JSON メッセージ内の各配列要素値に "group1" アイテムを繰り返し含む出力を生成する JSON サービス インターフェイス オペレーションを定義できます。これを行うには、インターフェイス マッパーを使用して、group1 インターフェイス グループの親となるインターフェイス グループ フィールドを追加し、group1 フィールドの [Occurs] プロパティを設定する代わりに、その親フィールドの Occurs プロパティをゼロ以外の値に設定します。結果の JSON メッセージは次のようになります。

"extraGroup":
[
  {
    "group1":
    {
      "field1":"someValue1",
      "field2":"someValue2"
    }
  },
  {
    "group1":
    {
      "field1":"someValue3",
      "field2":"someValue4"
    }
  }
]

JSON サービス インターフェイス以外では、ゼロ以外の [Occurs] プロパティは、そのインターフェイス フィールドが配列であることを示します。一方、JSON サービス インターフェイスでは、インターフェイス フィールドの [Occurs] プロパティが明確に 1 に設定されている場合、JSON 配列の構文を使用せずに、そのインターフェイス フィールドが単一のオブジェクトまたはプリミティブとして JSON メッセージに表示されます。