取得時のデータ変換
ここではキーと値のペアで使用するデータ形式について、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 が返ります。
バイト配列の取得では、JSON の文字列データのうち BASE64 と解釈可能な部分のみを利用して byte[] に変換します。たとえば
{"a":"b"}
は BASE64ab==
として解釈し、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
}
メソッド | value1 | value2 | value3 | value4 | value5 |
---|---|---|---|---|---|
"abc" | "123" | "123x456" | {"a":"b"} | null | |
getBoolean() | 例外 | 例外 | 例外 | 例外 | 例外 |
getByteArray() | 69, b7 | d7,6d | d7,6d,f1,e3,9e | 69 | 93,e9,65 |
getDouble() | 例外 | 123.0 | 例外 | 例外 | 例外 |
getInt() | 例外 | 123 | 例外 | 例外 | 例外 |
getJsonArray() | 例外 | 例外 | 例外 | 例外 | 例外 |
getJSONObject() | 例外 | 例外 | 例外 | {"a":"b"} | 例外 |
getLong() | 例外 | 123 | 例外 | 例外 | 例外 |
getString() | abc | 123 | 123x456 | {"a":"b"} | null |
getUri() | abc | 123 | 123x456 | {"a":"b"} | null |
getGeoPoint() | 例外 | 例外 | 例外 | 例外 | 例外 |
(続き)
メソッド | value6 | value7 | value8 | value9 | value10 |
---|---|---|---|---|---|
[1,2,3] | 123 | 8589934592 | 456.789 | true | |
getBoolean() | 例外 | 例外 | 例外 | 例外 | true |
getByteArray() | d7,6d | d7,6d | f3,9f,3d,f7,7e,39,f7 | e3,9e,bb,f3 | b6,bb,9e |
getDouble() | 例外 | 123.0 | 8.589934592E9 | 456.789 | 例外 |
getInt() | 例外 | 123 | 0 | 456 | 例外 |
getJsonArray() | [1,2,3] | 例外 | 例外 | 例外 | 例外 |
getJSONObject() | 例外 | 例外 | 例外 | 例外 | 例外 |
getLong() | 例外 | 123 | 8589934592 | 456 | 例外 |
getString() | [1,2,3] | 123 | 8589934592 | 456.789 | true |
getUri() | [1,2,3] | 123 | 8589934592 | 456.789 | true |
getGeoPoint() | 例外 | 例外 | 例外 | 例外 | 例外 |
※ 黄色い背景の箇所が本来の読み込み方法です。