メイン コンテンツをスキップする 補完的コンテンツへスキップ

JSON定義のインポートおよび作成

JSONスキーマインポートを使わずにJSONストラクチャーを作成する場合、このサンプルドキュメントにいずれかのJSONインスタンスのドキュメントに出現しうるオブジェクトや非オブジェクトの値がすべて含まれていることが必要です。含まれていない場合は、必要となるエレメントがストラクチャーに存在しなくなるため、JSONインスタンスのドキュメントを処理する時にランタイムエラーが発生する可能性があります。

このセクションの表記に従うことで、JSONストラクチャーを手動で作成するか、インポートしたJSONストラクチャーを同じく手動で変更し、不足しているエレメントを追加できます。

数値タイプ

JSONは数値の範囲を決定するメカニズムを指定しないため、JSONをインポートする時に実際の値を確認してこの数値を派生させる必要があります。インポーターは、e (指数)の存在や不在に基づいて、Decimalデータ型、またはDoubleデータ型を使用します。数値のサイズがIntegerより大きくなる(または64-bit Longになる)可能性があるため、整数よりも10進数が想定されます。さらに、この数値には実際のデータで断片的コンポーネントが含まれることがあります。よって、Decimalはこのような状況では常に動作します。Doubleは(指数値を持つ)浮動小数点数と見なされます。

配列

JSON内の配列は、ストラクチャーではループとして表示されます。その他のエレメントはJSONオブジェクトに基づいた階層で、想定どおりに定義されます。JSON内の配列では、数値によって次の状況が発生します。
  • 同じ型の非オブジェクト - 配列のどのメンバーも非オブジェクト(decimaldoublestringbooleanのいずれか)で、すべて同じ型(たとえばdecimalsdoublesの混合ではない)です。この場合、配列のエレメントはループし、検出された非オブジェクトタイプに基づいたデータ型を持ち、コンテナーとはなりません。

  • すべてのオブジェクト - 配列のどのメンバーもオブジェクトです。これは、ネストしている他のオブジェクトのように処理されます。

  • オブジェクトと非オブジェクトの混合 - 配列の一部のメンバーがオブジェクトで、他のメンバーが非オブジェクトの場合「混合」となります。また、どのメンバーも非オブジェクトとなることがありますが、たとえば10進数と文字列の混合のように、その型は同じではありません。

    これはループとしては扱われず、配列で指定されているようにオブジェクトと非オブジェクトの特定コレクションとして扱われ、それぞれ個別のエレメントが作成されます。通常のメンバーエレメントが各オブジェクトで作成されます。非オブジェクトの場合、存在する非オブジェクトの各型で_anonDecimal (DecimalStringDoubleBooleanに置換)という名前を持つ匿名メンバーが作成されます。この「混合」配列の各エレメント名には、その配列におけるエレメントの位置が末尾に付きます。

    情報メモNote: JSON SAX Reader and Writerで混合のJSON配列を読み取ることができるようにするには、選択肢型を使用します。

日付

JSONは、非オブジェクト値を日付型として指定する手段を提供しません。ただし、日付が含まれているエレメントについて、ストラクチャーエディター内のデータ型をDateDate/TimeTimeに変更すればこの操作を簡単に実行できます。また、標準のISO 8601日付形式でない場合は、適用できる日付形式を選択することもできます。この操作を行うと、日付は正しく認識され、マッピングされる時に自動的に変換されます。

このページは役に立ちましたか?

このページまたはコンテンツにタイポ、ステップの省略、技術的エラーなどの問題が見つかった場合はお知らせください。