Object の取得
Thing SDK Embedded では、ID で指定された特定の Object 1 つを取得できます。一旦作成した Object の ID を保存しておくと、後ほどこの ID を使って Object を参照できます。ID と Object の関係については、Kii Cloud SDK の「オブジェクトの ID と URI」(Android、iOS、JavaScript)をご覧ください。
なお、クエリーによる検索は 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 中の任意のキーから値を取得したい場合は、kiijson ライブラリーを使用できます。実装方法は、<a href="/ja/guides/thingifsdk/nontrait/thing/json-library/">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」(Android、iOS、JavaScript)をご覧ください。 |
_owner | Object 作成者のユーザーまたは Thing を表します。特に、Object の ACL で使用されます。 |
_created | Object の作成日時(UNIX 時間、ミリ秒、UTC)です。 |
_modified | Object の最終更新日時(UNIX 時間、ミリ秒、UTC)です。作成直後は _created と同じ値です。 |
_version | Object のバージョン番号です。作成直後は 1 で、更新するたびに 1 ずつ増えます。更新の衝突が発生したことを検出するために、楽観的ロック で使用します。 |