[ |../../../index.htm#lansa/jsoneng01_0015.htm]
現在地: Webサービス > JSON データの作業 > XPRIM_JsonObject と XPRIM_JsonArray の利用

XPRIM_JsonObject と XPRIM_JsonArray の利用

XPRIM_JsonObject と XPRIM_JsonArray は、JSON オブジェクトと JSON アレイのメモリ内表記です。それぞれの子エレメントはメモリ内のツリー状構造に格納され、メンバ名やアレイ・インデックスによるエレメントへのランダム・アクセスをサポートします。XPRIM_JsonObject と XPRIM_JsonArray には共通のスーパークラス XPRIM_JsonElement があります。
XPRIM_JsonObject/XPRIM_JsonArray はどちらも読み込み可能で (ランダム・アクセスにより) 変更も可能なので、別のルーチンやサードパーティのライブラリ・ルーチンに引き渡すためにメモリ内に自身の JSON データの抽象表記を作成する必要がある時には便利です。
ただし、JSON 文字列 (つまり、JSON データを示す文字列) を構築するだけの場合は、代わりに XPRIM_JsonWriter を使用してください。XPRIM_JsonWriter は JSON 文字列の構築のために特別に設計されたものなので、メモリのフットプリントも最小で非常に効率的です。同様に、JSON 文字列を解析してその値を読み込む必要がある場合は、XPRIM_RandomAccessJsonReader または XPRIM_JsonReader を使用する方が効果的です。XPRIM_JsonWriter と XPRIM_JsonReader については、次のセクションで説明します。
以下は、XPRIM_JsonObject と XPRIM_JsonArray の作成方法を示しています。
Define_Com Class(#XPRIM_JsonObject) Name(#RootObject)
Define_Com Class(#XPRIM_JsonArray) Name(#JsonArray)
これで、自身の JSON オブジェクトや JSON アレイに値を入れていくことができます。
JSON データには、次の 6 つの値のタイプがあります。

XPRIM_JsonObject と XPRIM_JsonArray には、オブジェクトまたはアレイに挿入する値のタイプそれぞれに対応する、以下のようなメソッドがあります。

ただし、XPRIM_JsonObject の Insert メソッドには挿入する値のプロパティ名を指定する Key パラメータがありますが、XPRIM_JsonArray の Insert メソッドではアレイの最後に値が追加されるため Key パラメータはないことに注意してください。
例:

例えば、'#String' という名前の変数に格納された次のような JSON 文字列がある場合、
\{
    "name":      \{ 
        "given":"John",
        "surname":"Smith"
    \},
    "age":45,
    "contactNo":
    \[
        \{ area:"02", no:"9378 2867", type:"landline" \},
        \{ no:"0468 732 371", type:"mobile" \}
    \]
\}
以下のようにして、この JSON 文字列を解析し、値を読み込みます。
Define_Com Class(#XPRIM_JsonObject) Name(#RootObject)
Define_Com Class(#XPRIM_ErrorInfo) Name(#ErrorInfo)

JSON 要素が特定のタイプであるかどうかを確認したいだけの場合は、次の Is… のいずれかを利用することができます。

次は: XPRIM_JsonWriter を利用して JSON 文字列を構築
[ |../../../index.htm#lansa/jsoneng01_0015.htm]