ユーザ用ツール

サイト用ツール


kotlin:serialize

差分

この文書の現在のバージョンと選択したバージョンの差分を表示します。

この比較画面にリンクする

次のリビジョン
前のリビジョン
kotlin:serialize [2019/11/19 21:32]
ips 作成
kotlin:serialize [2019/11/19 22:33] (現在)
ips [配列をシリアライズする]
ライン 14: ライン 14:
 ===== 配列をシリアライズする ===== ===== 配列をシリアライズする =====
  
 +[[https://​github.com/​Kotlin/​kotlinx.serialization|kotlinx.serialization]]を使用する必要がある。
  
 +
 +<code kotlin 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
 +    }
 +}
 +
 +</​code>​
 +
 +<code kotlin 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
 +    ...
 +</​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 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> ​
  
kotlin/serialize.1574166775.txt.gz · 最終更新: 2019/11/19 21:32 by ips