GetStream.io查询用户时invisible设为false但仪表盘显示null问题
解决GetStream.io用户invisible字段显示null及Moshi解析错误问题
问题分析
你遇到的JsonDataException是因为GetStream返回的用户数据中invisible字段为null,但你的User模型将该字段定义为非空Boolean类型,导致Moshi解析失败。同时仪表盘显示该字段为null,说明要么请求未正确发送false值,要么GetStream未正确存储该字段。
解决步骤
检查User类的序列化配置
确保invisible字段在Moshi序列化时被正确处理:data class User( val id: String, val name: String, val image: String?, // 明确指定JSON字段名,避免命名或大小写不匹配 @Json(name = "invisible") val invisible: Boolean )避免给字段添加
@Json(ignore = true)注解,同时确认自定义JsonAdapter没有忽略该字段。验证请求Payload的正确性
开启网络日志,检查发送给GetStream的请求体中是否包含"invisible": false。如果字段缺失,说明序列化过程存在问题,需排查Moshi配置或SDK版本(建议升级到GetStream SDK最新版)。适配GetStream返回的null值
由于GetStream可能返回null,可以修改模型字段为可空类型并设置默认值,避免解析错误:data class User( val id: String, val name: String, val image: String?, val invisible: Boolean? = false ) { // 业务逻辑中使用非空的计算属性 val safeInvisible: Boolean get() = invisible ?: false }也可以给Moshi添加自定义适配器,自动将
null转换为false。刷新仪表盘缓存
GetStream仪表盘可能存在数据缓存,尝试刷新页面或等待数分钟后再次查看,确认数据是否同步。若API请求已正确发送false,则以API返回结果为准。
内容的提问来源于stack exchange,提问作者Xynapz1 Test
相关产品推荐
相关产品推荐

