この文書の現在のバージョンと選択したバージョンの差分を表示します。
両方とも前のリビジョン 前のリビジョン 次のリビジョン | 前のリビジョン | ||
kotlin:serialize [2019/11/19 22:25] ips |
kotlin:serialize [2019/11/19 22:33] (現在) ips [配列をシリアライズする] |
||
---|---|---|---|
ライン 32: | ライン 32: | ||
</code> | </code> | ||
+ | |||
+ | <code kotlin build.gradle(app)> | ||
apply plugin: 'kotlinx-serialization' // add | apply plugin: 'kotlinx-serialization' // add | ||
ライン 37: | ライン 39: | ||
dependencies { | dependencies { | ||
+ | ... | ||
implementation 'com.google.android.material:material:1.0.0-alpha1' | implementation 'com.google.android.material:material:1.0.0-alpha1' | ||
implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" | implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" | ||
implementation "org.jetbrains.kotlinx:kotlinx-serialization-runtime:0.13.0" // add | implementation "org.jetbrains.kotlinx:kotlinx-serialization-runtime:0.13.0" // add | ||
+ | ... | ||
+ | </code> | ||
+ | シリアライズとは、簡単にいってしまえばオブジェクト(ポインタの集合)を文字列にして、データとして渡せる状態にすること。 | ||
+ | |||
+ | <code kotlin 渡す側のアクティビティ> | ||
+ | import kotlinx.serialization.* | ||
+ | import kotlinx.serialization.json.* | ||
+ | |||
+ | // オブジェクトにアノテーションをつける | ||
+ | @Serializable | ||
+ | data class RowData(var id:Int | ||
+ | ,var comp:Int | ||
+ | ,var score:Int) | ||
+ | | ||
+ | ... | ||
+ | |||
+ | // オブジェクトのシリアライズ Json.stringify(型,実データ) | ||
+ | putExtra("rowdata", Json.stringify(RowData.serializer(),data)) | ||
+ | |||
+ | // オブジェクト配列のシリアライズ Json.stringify(型,実データ) | ||
+ | val dataList = Json.stringify(RowData.serializer().list, datalist ) | ||
+ | putExtra("rowdataList", dataList) | ||
</code> | </code> | ||
+ | <code kotlin 受ける側のアクティビティ> | ||
+ | import kotlinx.serialization.* | ||
+ | import kotlinx.serialization.json.* | ||
+ | ... | ||
+ | |||
+ | val intent = getIntent() | ||
+ | // 文字列として受け取り、目的の型にパースする | ||
+ | rowData = Json.parse( RowData.serializer(),intent.getSerializableExtra("rowdata") as String) | ||
+ | | ||
+ | // リストの場合も文字列として受け取ってからパースする | ||
+ | val rowDataList = Json.parse( RowData.serializer().list , intent.getSerializableExtra("rowdataList") as String) | ||
+ | </code> | ||