この文書の現在のバージョンと選択したバージョンの差分を表示します。
| 両方とも前のリビジョン 前のリビジョン 次のリビジョン | 前のリビジョン | ||
|
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> | ||