JSON ドキュメントの設定

KiiObject の作成 に示した方法により、KiiObject に JSON ドキュメントを設定できます。また、KiiObject の更新 でも JSON ドキュメントを設定します。

JSON ドキュメントに設定できる値の仕様は以下のとおりです。

  • JSON ドキュメントに設定できる数値の範囲には特に制限がありません。ただし、大きな値を設定すると Kii Cloud SDK での参照エラーや、開発者ポータルの データブラウザー で正しい値が表示されないなどの問題が発生します。

  • 1 つの KiiObject に格納できるデータの最大サイズは、キーと値のペアを JSON 形式で表現した状態で 65534 文字までです(サイズには Kii Cloud が内部で使用するフィールドも含まれます)。

基本データ型の設定

KiiObject の新規作成時に、string、int、long、double、bool の各データ型を格納する例を以下に示します。

なお、以下のサンプルコードは、KiiObject の作成 のサンプルコードより、値の格納部分を変更したものです。

curl -v -X POST \
  -H "Authorization: Bearer {ACCESS_TOKEN}" \
  -H "Content-Type: application/vnd.{APP_ID}.mydata+json" \
  "https://api-jp.kii.com/api/apps/{APP_ID}/users/me/buckets/{BUCKET_ID}/objects" \
  -d '{
        "stringValue": "my value",
        "booleanValue": true,
        "longValue": 1495677489018,
        "doubleValue": 987.654,
        "intValue": 123
      }'

位置情報(GeoPoint)の設定

KiiObject に位置情報(GeoPoint)をセットする方法を説明します。

位置情報を格納するには、任意のキーの値として、以下のような JSON オブジェクトを設定します。GeoPoint は第 1 階層にのみ定義できます。ネスティングはサポートしていません。

キー
_type 常に固定値 "point" を定義します。
lat 緯度を表す -90 から 90 までの値(境界値 90 は指定不可)を定義します。
lon 経度を表す -180 から 180 までの値(境界値 180 は指定不可)を定義します。

例として、現在ログイン中のユーザーのユーザースコープに存在する Bucket 内に KiiObject を作成し、これに位置情報を 2 つセットするサンプルコードを以下に挙げます。

curl -v -X POST \
  -H "Authorization: Bearer {ACCESS_TOKEN}" \
  -H "Content-Type: application/vnd.{APP_ID}.mydata+json" \
  "https://api-jp.kii.com/api/apps/{APP_ID}/users/me/buckets/{BUCKET_ID}/objects" \
  -d '{
        "location1":{
          "_type": "point",
          "lat": 35.658603,
          "lon": 139.745433
        },
        "location2":{
          "_type": "point",
          "lat": 35.658625,
          "lon": 139.745415
        }
      }'

複雑なデータ型の設定

ネストした JSON ドキュメントを設定することもできます。

以下に例を示します。

curl -v -X POST \
  -H "Authorization: Bearer {ACCESS_TOKEN}" \
  -H "Content-Type: application/vnd.{APP_ID}.mydata+json" \
  "https://api-jp.kii.com/api/apps/{APP_ID}/users/me/buckets/{BUCKET_ID}/objects" \
  -d '{
        "myArray": [
          {
            "Name": "Alice",
            "age": 30
          },
          {
            "Name": "Bob",
            "age": 28
          }
        ],
        "myObject": {
          "score": 987,
          "mode": "easy"
        }
      }'