ユーザ用ツール

サイト用ツール


kotlin:serialize

差分

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

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

両方とも前のリビジョン 前のリビジョン
次のリビジョン
前のリビジョン
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> ​
  
kotlin/serialize.1574169924.txt.gz · 最終更新: 2019/11/19 22:25 by ips