gson 使用导航组件时deeplink发送不完整序列化参数

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

我想使用导航组件和深层链接打开一个片段。

val serializedUser = Gson().toJson(user)
findNavController().navigate(Uri.parse("myapp://?user=${serializedUser}"))

但在目标片段中有时变元不完整。

val serializedUser = arguments?.getString("user")
val post = Gson().fromJson(serializedUser, User::class.java)

并得到以下错误:

com.google.gson.JsonSyntaxException: com.google.gson.stream.MalformedJsonException: Unterminated string at line 1 column 1156 path $.text

如果我在目标片段中记录serializedUser,则这不完整,且在其结尾处某些字符不存在,而在第一片段中它是完整的。
序列化模型是一个很长的字符串,但它的长度似乎与此问题无关,因为某些较长的序列化模型正在工作。
只有在使用导航组件深层链接时才会出现此问题。

woobm2wo

woobm2wo1#

Uri.parse(String)解析编码的URI字符串,但您没有对serializedUser进行编码。
要解决这个问题,您应该使用Uri.fromParts(...)Uri.Builder类,因为它不需要您对serializedUser进行编码。

相关问题