gson 如何在不改变“var”定义的情况下改变对象中的“瓦尔”值?

hxzsmxv2  于 2022-11-06  发布在  其他
关注(0)|答案(1)|浏览(207)

我有一个复杂的Kotlin数据类,可以这样说:

data class Post(
    val message: Message,
    val dateAndTime: LocalTime,
    val postAuthor: Author?,
    val visitorsVisitedTimes: List<Pair<LocalTime, Author>>
)

Message, LocalTime, ...是不同的数据类。
我有一个以上Post数据类的对象。我想解析它,访问visitorsVisitedTimes字段值,对于每一对,用对应的postAuthor替换Author对象。我还必须在Message对象中做类似的修改。
我不想在类定义中做任何更改。
一种方法是将此对象转换为json字符串,解析它,进行必要的更改,然后将其转换回Post::class.java并返回。
我做了这样的事情:

// input is an object of Post::class
var jsonString: String = Gson().toJson(input)
// parse the json string, make required changes
var objectFromJson: Post = Gson().fromJson(jsonString, Post::class.java)
return objectFromJson

但是,我不确定如何在Json字符串中进行所需的更改。
我怎么能做到,如果不行,还有别的办法做这个任务吗?

uurity8g

uurity8g1#

创建对象的副本,请参阅https://kotlinlang.org/docs/data-classes.html

val newPost = post.copy(
    message = post.message.copy(text = "some text"),
    postAuthor = Author(...)
)

相关问题