ユーザ用ツール

サイト用ツール


サイドバー

kotlin:serialize

Serialize

オブジェクトをシリアライズする

import java.io.Serializable

data class RowData(var id:Int
                    ,var type:Int
                    ,var score:Int):Serializable

配列をシリアライズする

kotlinx.serializationを使用する必要がある。

build.gradle(project)
buildscript {
    ext.kotlin_version = '1.3.50'
    repositories {
        google()
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.5.2'
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
        classpath "org.jetbrains.kotlin:kotlin-serialization:$kotlin_version" // add
    }
}
build.gradle(app)
apply plugin: 'kotlinx-serialization' // add
 
...
 
dependencies {
    ...
    implementation 'com.google.android.material:material:1.0.0-alpha1'
    implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
    implementation "org.jetbrains.kotlinx:kotlinx-serialization-runtime:0.13.0" // add
    ...

シリアライズとは、簡単にいってしまえばオブジェクト(ポインタの集合)を文字列にして、データとして渡せる状態にすること。

渡す側のアクティビティ
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)
受ける側のアクティビティ
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)
kotlin/serialize.txt · 最終更新: 2019/11/19 22:33 by ips