取得時のデータ変換

ここではキーと値のペアで使用するデータ形式について、JSON のデータ形式を Kii Cloud SDK で読み込んだ際の変換例を示します。

特定のプラットフォームで、かつ、決められた型でしか値を読み書きしない場合(int で書き込んだ値は、必ず int で取得する場合など)、このページの内容はご覧にならなくても問題ありません。

JSON ドキュメントから getter メソッドで値を読み込む際、以下のように取得処理が行われます。

  • モバイルアプリ側で取得したい型ごとに getter メソッド(getString()getInt() など)が提供されています。JSON の型が取得したいデータ型に変換できない場合は例外が発生します。

  • デフォルト値を指定しない状態で、JSON の型が取得したいデータ型に変換できない場合は例外が発生します。また、キーが存在しない場合は例外が発生します。

  • JSON で null が設定されている場合、null を表現できる String 等の型では null として取得できます。int 等の null がない型では取得で例外が発生します。

  • 目的の型に変換可能なデータはそのまま取得できます。たとえば、文字列として格納された数値( {"data":"20"}"20" など)を int として取り出したり、JSON オブジェクトを String として取り出したりすることができます。ただし、文字列の一部を数値として取り出すことはできません("123x456"123 と解釈されません)。

  • 数値の取得でオーバーフローが発生した場合は 0 が返ります(Unity と異なる動作です)。

  • バイト配列の取得では、JSON の文字列データのうち BASE64 と解釈可能な部分のみを利用して byte[] に変換します。たとえば {"a":"b"} は BASE64 ab== として解釈し、69 がデコードされます。ただし、この動きは Kii Cloud SDK 内部のライブラリーに依存する動作であるため、積極的に利用すべきではありません。

取得の例

以下のような JSON ドキュメントが KiiObject に格納されているとき、それぞれのキーを各 getter メソッドで読み込むと、その下の表に示す結果になります。

{
  "value1": "abc",
  "value2": "123",
  "value3": "123x456",
  "value4": {"a":"b"},
  "value5": null,
  "value6": [1, 2, 3],
  "value7": 123,
  "value8": 8589934592,
  "value9": 456.789,
  "value10": true
}
メソッドvalue1value2value3value4value5
"abc""123""123x456"{"a":"b"}null
getBoolean()例外例外例外例外例外
getByteArray()69, b7d7,6dd7,6d,f1,e3,9e6993,e9,65
getDouble()例外123.0例外例外例外
getInt()例外123例外例外例外
getJsonArray()例外例外例外例外例外
getJSONObject()例外例外例外{"a":"b"}例外
getLong()例外123例外例外例外
getString()abc123123x456{"a":"b"}null
getUri()abc123123x456{"a":"b"}null
getGeoPoint()例外例外例外例外例外

(続き)

メソッドvalue6value7value8value9value10
[1,2,3]1238589934592456.789true
getBoolean()例外例外例外例外true
getByteArray()d7,6dd7,6df3,9f,3d,f7,7e,39,f7e3,9e,bb,f3b6,bb,9e
getDouble()例外123.08.589934592E9456.789例外
getInt()例外1230456例外
getJsonArray()[1,2,3]例外例外例外例外
getJSONObject()例外例外例外例外例外
getLong()例外1238589934592456例外
getString()[1,2,3]1238589934592456.789true
getUri()[1,2,3]1238589934592456.789true
getGeoPoint()例外例外例外例外例外

※ 黄色い背景の箇所が本来の読み込み方法です。