如何在 Android 中将 Type 对象转换为字符串,反之亦然 [Kotlin]

How to convert a Type object to string and vice versa in Android [Kotlin]

提问人:oyeraghib 提问时间:8/26/2022 最后编辑:oyeraghib 更新时间:11/4/2022 访问量:3225

问:

我正在尝试将自定义 Data 类对象转换为 String,反之亦然。我怎样才能做到这一点?

我读过关于序列化和可包裹的文章,但我不确定如何实现它。我看了一些教程,但仍然无法真正弄清楚。

还有其他方法可以实现它吗?比如我可以以编程方式完成吗?

这是我需要转换的表格

@Entity(tableName = "floor_profile")
class FloorProfileEntity(

    @PrimaryKey(autoGenerate = true)
    val id: Int? = 0,

    @ColumnInfo(name = "profile_name")
    val profileName: String? = null,

    @ColumnInfo(name = "chosen_floors")
    @field:TypeConverters(FloorsConverter::class)
    val chosen_floors: List<String>? = null,

    @ColumnInfo(name = "start_time")
    @field:TypeConverters(FloorsConverter::class)
    val startEndRunningTime: List<TimeEntity>? = null
)

时间实体表

@Entity(tableName = "add_time")
data class TimeEntity(

    @PrimaryKey(autoGenerate = true)
    var id: Int? = null,

    @ColumnInfo(name = "start_time")
    var startTime: String = "",

    @ColumnInfo(name = "end_time")
    var endTime: String = "",

    @ColumnInfo(name = "running_time")
    var runningTime: String = ""

)

转换器类

    /** Converting List of TimeEntity to String and vice versa */
    @TypeConverter
    fun listOfTimeEntityToString(value: List<TimeEntity>): String {
        return value.toString()
    }

    @TypeConverter
    fun stringToTimeEntity(value: String): List<TimeEntity> {
        return 
    }
Android Kotlin 对象 类型转换 数据类

评论

0赞 ADM 8/26/2022
为什么需要 Converter for Entity .TimeEntity 表示表本身 ..
0赞 oyeraghib 8/26/2022
@ADM对不起,刚刚更新了问题。
0赞 ADM 8/26/2022
stackoverflow.com/questions/61963144/......
0赞 cutiko 8/26/2022
使用 GSON 或 Jackson,然后时间将保存为字符串,这意味着您正在使用的 ROOM 注释将不起作用。
0赞 oyeraghib 8/26/2022
@cutiko我不想节省时间。我已经在名为 TimeEntity 的数据库类中节省了时间。现在,在另一个表中,我正在尝试存储 TimeEntity 的对象,并且由于空间不允许将非原始数据放入数据库,我正在寻找一种将此 TimeEntity 转换为 String 的方法。所以我可以把它存储到数据库中。

答:

-1赞 Aniket kumar 8/26/2022 #1

使用 Gson 或 Jackson 库,然后时间将保存为字符串。

评论

0赞 oyeraghib 8/26/2022
你能解释一下吗,或者提供一些细节,比如代码示例或其他什么?
1赞 mikail yusuf 11/4/2022 #2

您可以使用 Gson,因为它提供了简单的 toJson() 和 fromJson() 方法将 Java 对象转换为 JSON,反之亦然,

假设您有一个带有 Gson 的用户对象,您可以使用val user = User(name="Jane Doe",id=1)

val convertJsonString = Gson().toJson(user)

上面给出了一个字符串,您可以将其保存到数据库中

若要将其转换回对象,请使用 fromJson 方法

val userObject = Gson().fromJson(convertJsonString,User::class.java)