android - 验证 POJO 数据类是否正确映射
问题描述
我正在使用带有 GSON 的 POJO 数据类来解析从 Firestore 数据库调用的数据。
例如,我有一个 POJO 类,其中包含一些不可为空和可以为空的值,例如 userID
data class Users(id:String="", userID:String="" ...)
然后我使用 GSON 将 JSON 数据解析为该类的对象
val gson = Gson()
val jsonObjects = gson.toJson(querySnapshot.data)
val parseData = gson.fromJson(jsonObjects,Users::class.java)
我的问题是,如果有人在数据库中上传数据并忘记添加用户 ID(即它为空),有没有办法可以在解析时检查用户数据类是否有效?
我正在使用类似 if(userID == ""){return false} 的检查。但随着不可空字段数量的增加,它变得乏味,必须有更好的方法来检查这一点。
解决方案
我的问题是,如果有人在数据库中上传数据并忘记添加用户 ID(即它为空),有没有办法在解析时检查用户数据类是否有效?
如果您根本不想有空值,为什么还要让用户提供不完整数据的可能性?最简单的解决方案是限制添加到数据库的数据。如何?只需创建一些约束即可。例如,如果您的用户未填写所有必填字段,他们将无法访问您应用中的某个功能。这是一种被广泛使用的操作。
如果您已经有空值,那么检查空值是您可以继续使用的解决方案。在 Kotlin中,可以通过多种方式处理null 安全性,通过在条件中检查 null、使用安全调用、elvis 运算符甚至使用!! 运营商。
推荐阅读
- ios - 使用 AWS 生成的适用于 iOS 的开发工具包调用 API 时出错,即使用户已登录
- ansible - 带有 terraforn 的 Jenkins 管道 - 如何将输出变量馈送到以下 Ansible 阶段
- sql - SELECT QUERY 中的 INDIRECT
- linux - 为什么这个 Linux 命令的结果没有通过管道传输?
- python - pandas - 从组中获取最大行数
- c++ - 伪造/模拟非虚拟 C++ 方法,无需更改 Visual Studio 平台上的生产代码
- javascript - 为什么 Chrome 提醒会多次显示?(同样的警报)
- d - 如何使用 dub 从本地文件系统导入包?
- mysql - 不希望 MySQL 中的减法结果为负
- javascript - jQuery 从外部 URL 解析 JSON 数组并循环