キーと値のペアの取得
KiiObject からキーと値のペアを取得するには、KiiObject
クラスの get()
のメソッドを呼び出します。
get()
メソッドの引数には、取得するキー名を指定します。JSON ドキュメントから、指定した第 1 階層のキーの値が読み込まれます。取得した値は、JSON ドキュメントの指定したキーに応じたデータ型で取得できます。
以下に JSON ドキュメントのサンプルと、その JSON ドキュメントから値を取得するためのサンプルコードを示します。サンプルコードのコメントは、取得できた値を表します。KiiObject の取得処理まで含む完全なコードは、下記の 基本データ型の取得 を参照してください。
{
"score": 987,
"premiumUser": false,
"mode": "easy"
}
var score = object.get("score"); // score=987
var mode = object.get("mode"); // mode="easy"
var premiumUser = object.get("premiumUser"); // premiumUser=false
第 2 階層より深い位置の値を読み込みたい場合は、第 1 階層を JSON オブジェクトとして取得してください。
サポートするデータ型
get()
メソッドを実行した結果のバリエーションを、以下の表に示します。「読み込み元 JSON の例」に示す JSON ドキュメントを「呼び出し例」で取得すると、「取得結果」の値を取得できます。
JavaScript では実行時に型が決まるため、同じ get()
メソッドを使ってすべてのデータ型を扱うことができます。ただし、位置情報(KiiGeoPoint
)を扱う場合に get()
メソッドを使うと内部データが object として取得されるため、専用メソッド getGeoPoint()
を使って取得します。
値の型 | 読み込み元 JSON の例 | 呼び出し例 | 取得結果 |
---|---|---|---|
string | "data":"123" |
get("data"); |
"123" |
number | "data":123 |
get("data"); |
123 |
boolean | "data":true |
get("data"); |
123L |
KiiGeoPoint | "data":{ "_type": "point", "lat": 35.658603, "lon": 139.745433 } |
getGeoPoint("data"); |
getGeoPoint("data", geoPoint); |
配列 | "data":[1,2,3] |
get("data"); |
[1,2,3] |
object | "data":{"a":"b"} |
get("data"); |
{"a":"b"} |
JavaScript では Android にある、バイト配列を BASE64 にして取得する機能はサポートしていません。必要な場合は文字列で取得後に、アプリ側で BASE64 デコードを行います。
基本データ型の取得
KiiObject よりキーと値のペアを取得するには get()
メソッドを実行します。詳細については JSDoc を参照してください。
以下に、KiiObject よりキーと値のペアを取得するサンプルを挙げます。
-
// Instantiate a KiiObject. var object = KiiObject.objectWithURI("Set the URI of an existing KiiObject here"); // Refresh the KiiObject to retrieve the latest data from Kii Cloud. object.refresh().then( function(theObject) { // Get key-value pairs. var stringData = object.get("stringValue"); var intData = object.get("intValue"); var longData = object.get("longValue"); var doubleData = object.get("doubleValue"); var booleanData = object.get("booleanValue"); } ).catch( function(error) { var theObject = error.target; var errorString = error.message; // Handle the error. } );
-
// Instantiate a KiiObject. var object = KiiObject.objectWithURI("Set the URI of an existing KiiObject here"); // Refresh the KiiObject to retrieve the latest data from Kii Cloud. object.refresh({ success: function(theObject) { // Get key-value pairs. var stringData = object.get("stringValue"); var intData = object.get("intValue"); var longData = object.get("longValue"); var doubleData = object.get("doubleValue"); var booleanData = object.get("booleanValue"); }, failure: function(theObject, errorString) { // Handle the error. } });
インスタンス作成後、refresh()
メソッドを呼ぶのを忘れないようにしてください。KiiObject のインスタンスを生成しただけでは、KiiObject の中身は最新のものになりません。
キー一覧の取得
KiiObject にセットされているキーの一覧は、次の例のように getKeys()
メソッドを使って確認できます。
-
// Instantiate a KiiObject. var object = KiiObject.objectWithURI("Set the URI of an existing KiiObject here"); // Refresh the KiiObject to retrieve the latest data from Kii Cloud. object.refresh().then( function(theObject) { // Get a list of keys. var keys = object.getKeys(); // Do something with the list. for (var i = 0; i < keys.length; i++) { console.log(keys[i] + "=" + object.get(keys[i])); // Do something with each key. } } ).catch( function(error) { var theObject = error.target; var errorString = error.message; // Handle the error. } );
-
// Instantiate a KiiObject. var object = KiiObject.objectWithURI("Set the URI of an existing KiiObject here"); // Refresh the KiiObject to retrieve the latest data from Kii Cloud. object.refresh({ success: function(theObject) { // Get a list of keys. var keys = object.getKeys(); // Do something with the list. for (var i = 0; i < keys.length; i++) { console.log(keys[i] + "=" + object.get(keys[i])); // Do something with each key. } }, failure: function(theObject, errorString) { // Handle the error. } });
getKeys()
メソッドでは、プログラムから設定したキーの一覧のみを取得できます。Kii Cloud SDK for JavaScript では、_version や _id などの所定キーは読み込めません。所定キーについて詳しくは、所定キー をご覧ください。
空のフィールドの読み込み
キーと値のペアの取得の際は、存在しないキーの値を読み込んだときと JSON の null を読み込んだときで挙動が違います。
たとえば、以下のような JSON が書き込まれているオブジェクトから値を読み込むものとします。
{
"key1": null,
"key2": ""
}
各メソッドでの取得結果は以下のとおりです。
- object.get("key1") は null を返します。
- object.get("key2") は空文字列を返します。
- object.get("key3") は Undefined を返します。
JSON とデータ型との対応の詳細は、取得時のデータ変換 をご覧ください。
作成/更新時間の取得
Kii Cloud は、KiiObject の作成時間と最終更新時間を自動的にセットします(いずれも UNIX 時間、ミリ秒)。これらの情報は、それぞれ KiiObject
オブジェクトの getCreated()
メソッドと getModified()
メソッドを実行することで取得可能です。
なお、時間は UTC(協定世界時)で保存されているため、必要に応じて変換を行ってください。
位置情報(GeoPoint)の取得
KiiObject にセットした位置情報を抽出するには、まず KiiObject のキーを指定して getGeoPoint()
メソッドを実行し、KiiGeoPoint
オブジェクトを取得します。この後、getLatitude()
メソッドおよび getLongitude()
メソッドを実行して、それぞれ緯度、経度の取得を行います。
// Get GeoPoints from the "location1" and "location2" keys.
var objLoc1 = object.getGeoPoint("location1");
var objLoc2 = object.getGeoPoint("location2");
// Get the latitude and longitude data.
var lat1 = objLoc1.getLatitude();
var lon1 = objLoc1.getLongitude();
var lat2 = objLoc2.getLatitude();
var lon2 = objLoc2.getLongitude();
複雑なデータ型の取得
JavaScript では、KiiObject にセットした JSON オブジェクトや JSON オブジェクトの配列などを型に関係なく取得できます。
複雑なデータ型の設定 のサンプルコードでセットした値を取得する例を以下に挙げます。
// Get a value of a JSON object.
var jsonObject = object.get("myObject");
console.log(JSON.stringify(jsonObject));
// Get a value of a JSON array.
var jsonArray = object.get("myArray");
console.log(JSON.stringify(jsonArray));