Object の取得

Thing SDK Embedded では、ID で指定された特定の Object 1 つを取得できます。一旦作成した Object の ID を保存しておくと、後ほどこの ID を使って Object を参照できます。ID と Object の関係については、Kii Cloud SDK の「オブジェクトの ID と URI」(AndroidiOSJavaScript)をご覧ください。

なお、クエリーによる検索は Thing SDK Embedded で直接サポートされていませんが、REST API を利用すれば実行できます。REST API で検索クエリーを実行するサンプルコードについては、REST API の実行 をご覧ください。

Object の JSON データを取得するには、以下のように ID を指定して kii_object_get を実行します。

/* Set the KiiObject ID. */
#define OBJECT_ID "STATUS_TEMPERATURE"

int ret;

/* Set bucket parameters. */
kii_bucket_t bucket;
memset(&bucket, 0x00, sizeof(kii_bucket_t));
bucket.scope = KII_SCOPE_THING;
bucket.bucket_name = "myBucket";
bucket.scope_id = "VENDOR_THING_ID:rBnvSPOXBDF9r29GJeGS";

/* Get the KiiObject. */
ret = kii_object_get(&kii, &bucket, OBJECT_ID);
if (ret != 0) {
  /* Handle the error. */
  return;
}

printf("object data:%s\n", kii.kii_core.response_body);

取得対象の Bucket は、kii_bucket_t 構造体で指定します。指定方法は、Object の作成 をご覧ください。

取得結果は、kii_t 構造体の kii_core.response_body に入ります。サンプルコードのように、このメンバーを直接参照して JSON 文字列を取得できます。

JSON 中の任意のキーから値を取得したい場合は、kii_json ライブラリーを使用できます。実装方法は、JSON の解析 をご覧ください。

取得した Object の例を以下に示します(実際のメッセージは改行等で整形されていない連続データです)。

{
  "_created": 1466154835092,
  "_id": "STATUS_TEMPERATURE",
  "_modified": 1466154939409,
  "_owner": "th.727f20b00022-e1ba-6e11-42e2-08707492",
  "_version": "1",
  "power": true,
  "status": "NORMAL",
  "temperature": 25
}

既定フィールドの参照

Kii Cloud は、Object が作成されると、以下の表にあるフィールドを自動的にセットします。JSON を取得したとき、これらのフィールドが含まれた状態で取得されます。

キー名 内容
_id Object の識別子です。自動的に割り当てられた値か、作成時に指定した値のどちらかになります。ID の値は Bucket 内だけで一意であることが保証されます。詳細は、Kii Cloud SDK の「オブジェクトの ID と URI」(AndroidiOSJavaScript)をご覧ください。
_owner Object 作成者のユーザーまたは Thing を表します。特に、Object の ACL で使用されます。
_created Object の作成日時(UNIX 時間、ミリ秒、UTC)です。
_modified Object の最終更新日時(UNIX 時間、ミリ秒、UTC)です。作成直後は _created と同じ値です。
_version Object のバージョン番号です。作成直後は 1 で、更新するたびに 1 ずつ増えます。更新の衝突が発生したことを検出するために、楽観的ロック で使用します。