我有一个数据类Shift:
@Serializable
data class Shift(
@SerialName("id") val id: String,
@SerialName("username") val username: String,
@SerialName("start") var start: LocalDateTime,
@SerialName("end") var end: LocalDateTime?,
@SerialName("canceled") var canceled: Boolean,
@SerialName("user") val user: User,
)
我想将这个
id
插入到带有字符串插值的字符串中。
"/schedule/shift/${shift.id}"
预期结果是:
"/schedule/shift/288aa888-2380-4290-affe-510355265a6d"
但不知怎的,它用整个对象替换了
shift
并忽略了.id,导致了这个结果:
"/schedule/shift/{Shift(id=288aa888-2380-4290-affe-510355265a6d, username=guus, start=2025-01-24T19:00, end=null, canceled=false, user=User(username=guus, name=Guus, isAdmin=true)).id}"
这是怎么回事?
问题中的代码看起来不错并且按预期工作。您可以通过创建一个新项目自行尝试,然后复制问题中的代码。
您的实际代码,但是,
$
符号在字符串模板中向右移动了一个字符:
"/schedule/shift/{$shift.id}"
这是您观察到的结果如何发生的唯一解释。只需在代码中搜索
{$
即可找到罪魁祸首,并将 $
符号移到大括号之外。