オブジェクトとプロパティ

www.altova.com このトピックを印刷 前のページ 1つ上のレベル 次のページ

ホーム >  ユーザーマニュアル > JSON と JSON スキーマ > JSON スキーマビュー >

オブジェクトとプロパティ

オブジェクトは、中かっこで区切られており、値にキーを以下のようにマップします: "MyKey": Value。 キーは常に文字列である必要があり、そのために引用符で囲まれている必要があります。値は、JSON データ型任意のであることができます。 各 key:value ペアはオブジェクトのプロパティとして知られています (下のスクリーンショット参照)。

 

以下は、 3 つの プロパティを持つインスタンス化されたオブジェクトの例です:

 

    {

      "emailtype": "home",

      "emailaddress": "contact01.home@altova.com",

      "citycode": 22

    }

 

オブジェクトのためのスキーマは、デザインビューで以下のように表示されます。

JSONObject01

以下の点に注意してください:

 

それぞれのプロパティは、インスタンス内に存在する必要があります。 これは、プロパティの境界により示されています。プロパティがオプションである場合、境界は点線で表示されています。プロパティが必要であるかまたはオプションであるかをプロパティのコンテキストメニューまたは詳細入力ヘルパーで設定することができます。
プロパティがインスタンス内で発生する順序は、スキーマ内で定義することはできません。これは、スキーマ内で定義されるプロパティの順序は、無関係であるからです。
かっこ内の青い角のシンボルは、(他のシンボルにより示されているプロパティワイルドカード または プロパティワイルドカードに対して)プロパティを示しています。下を参照してください。.
プロパティの型は、ダイアグラム内の型をダブルクリックして編集することができ、表示されるドロップダウンリストからオプションを選択することができます。 または、型は詳細入力ヘルパー内で選択することができます。
emailaddress プロパティの制約の値は、入力ヘルパーの制約で定義することができます。

 

プロパティ、パターンプロパティ、プロパティワイルドカード、およびプロパティ名スキーマ

オブジェクトは、プロパティ、 パターンプロパティ、プロパティワイルドカード、およびプロパティ名スキーマ (draft-07 の新規機能). を持つことができます。これらは、オブジェクト コンテキストメニューを使用して追加することができます: (i) オブジェクト、 (ii) 黄色いプロパティボックス (ボックスのプロパティタイトルを右クリック)、 (iii) それぞれのプロパティ。プロパティは上で説明されています。ここでは、パターンプロパティとプロパティワイルドカードについて説明をおこないます。

 

パターンプロパティ (下のスクリーンショット) は、プロパティの名前を正規表現として定義します。下のスクリーンショットでは、例えば、正規表現は以下を指定します: (i) プロパティがアンダースコアで始まる名前を有する、そして、 (ii) ブール値を値として有する。ワイルドカードのための制約条件はありません。パターンプロパティは任意の数追加することができます。パターンプロパティのためのアイコンに注意してください。

 

JSONObjectPatternProp01

 

プロパティワイルドカード (下のスクリーンショット) は、オブジェクトのプロパティセットの他のプロパティに加え発生するプロパティを指定します。ワイルドカードはしかしながら、これらの発生のための型を定義します。下のスクリーンショットは、数値以外の値を持つ名前を持つプロパティを定義するプロパティワイルドカードを表示しています。 各オブジェクトにプロパティワイルドカードは1つのみ存在することができます。ワイルドカードが Any 型、に設定されている場合は、 入力ヘルパーの制約内のそれぞれの方の制約を設定することができます。プロパティワイルドカードのためのアイコンに注意してください。

 

JSONObjectPropertyWildcard

 

プロパティ名スキーマ (下のスクリーンショット) はそのメンバーのプロパティの名前を制約します (これは draft-07 の新規機能です。) 例えば、下のスクリーンショットでは、プロパティの名前は文字列である必要があることがわかります。更に、制約入力ヘルパーを使用してプロパティ名のために更に制約を指定することができます: 例えば、プロパティの名前はプロパティ名は特定の文字の長さにおさまる、または、特定のパターンを持ちます。

 

JSONObjectPropertyNamesSchema

 

メモ:プロパティワイルドカード または プロパティワイルドカードの最小および最多の発生設定はありません。 更に深い理解のためにプロパティの検証を参照してください。

 

プロパティの検証方法

プロパティがインスタンスに遭遇した場合、以下の方法で検証することができます:

 

1.スキーマ内のプロパティの 名前は、オブジェクトのすべての名前付けられたプロパティに対してチェックされます。
2.一致が検出されない場合、名前はオブジェクトのプロパティセット内のすべてのパターンプロパティに対してチェックされます。
3.まだ一致が検出されない場合、存在する場合はワイルドカードが呼び出されます。
4.まだ名前との一致が検出されない場合、有効性エラーが報告されます。 プロパティまたは パターンプロパティに一致する名前、 またはワイルドカードが存在する場合、値がプロパティ定義に対応するに値に対してチェックされます。
5.インスタンス値が対応するプロパティ定義の型と制約に一致する場合、プロパティは有効です。それ以外の場合は無効です。

 

サンプル

下のスクリーンショットは、以下の条件を持つオブジェクトを定義しています:

 

emailtype、emailaddress、 および citycode  という名前を持つ 3 つの プロパティ が必要です。
アンダースコアで始まる名前を持ち、 ブール値を持つ1つ または複数のプロパティを持つことができます(下のスクリーンショットのパターンプロパティを参照)。
任意の名前と値を持つ1つ または複数の追加プロパティを持つことができます。

JSONObjectExample


(C) 2019 Altova GmbH