Navigation Kotlinx Serialization 模块
这个可选 JVM 11 Adapter 用 Kotlinx KSerializer<T> 创建 Core NavRouteSpec<T>。源码已登记的
0.1.0-alpha01 公开 Navigation Core 与 Serialization Core,不含平台依赖,用于扁平 Route Schema。
创建 Route Spec
@Serializable
data class ProfileRoute(
val userId: Long,
val tab: String = "posts",
)
val ProfileDestination: NavRouteSpec<ProfileRoute> =
serializableNavRouteSpec(name = "profile")
fun serializableRouteSample(): ProfileRoute {
val route = ProfileDestination.encode(ProfileRoute(userId = 42L))
return ProfileDestination.decode(route)
}
Reified Overload 会取得 Serializer,其他调用方显式传入。精确映射为:Boolean 对应
BooleanValue,Byte/Short/Int 对应 IntValue,Long 对应 LongValue,Float/Double 对应同名
Value,Char/String/Enum 对应 Text,Nullable Scalar 对应其值或 Null。
Root 必须是 Class 或 Object,字段仅可为 Scalar、Enum、Nullable Scalar 或受支持的 Inline
Scalar。创建阶段会拒绝 Nested Object、Collection、Map、Polymorphic/Contextual Shape、Unsigned
字段、非 Object Root 与非有限浮点值。单次调用内的 JSON 桥接 Serializer;系统只保留不可变
NavRoute/NavValue。Decode 拒绝未知 Name、非法 Null 和错误 Variant,省略的 Default 会被重建。
Schema 必须保持可恢复;Alternative JSON Name 已禁用。