如何在 kotlin 中将对象字符串转换为数据 Class

How convert Object String to Data Class in kotlin

我想将下面的.tostring转换成数据class如何转换?

InstrumentResponse(AGM=false, AllOrNone=true, Bonus=true, Dividend=true, EGM=false, AuctionDetailInfo=AuctionDetailInfo(AuctionNumber=0, AuctionStatus=0, InitiatorType=0)

我试图通过捆绑将数据 class 从一个片段传递到另一个片段,但是使用 bundle.putString 如何将其再次转换为数据 class?

有没有更好的实现方式?或者如何将 dataClass.toString 转换为数据 class ?

你应该只使用 @Parcelize.

添加

androidExtensions {
    experimental = true
}

给你build.gradle.

然后给你加注解class

@Parcelize
data class InstrumentResponse(...)

然后直接把值放到Bundle

bundle.putParcelable(key, instrumentReponse)

要检索值,请调用

val instrumentReponse = bundle.getParcelable<InstrumentResponse>(key)

要在活动之间传递数据 class,不要使用 toString。相反,使用 putParcelable。 Parcelable 是 Android 的自定义序列化格式。请参阅官方文档(带示例)here


如果您不想深入研究 Parcelable 实现细节,您可以使用 kotlin experimental features

Starting from Kotlin 1.1.4, Android Extensions plugin provides Parcelable implementation generator as an experimental feature.

简而言之,添加

androidExtensions {
    experimental = true
}

到您的 build.gradle,然后在您的数据 class 中使用 @Parcelize 注释并使其继承自 Parcelable:

import kotlinx.android.parcel.Parcelize

@Parcelize
class InstrumentResponse(...): Parcelable