Android健身App训练信息存储方案咨询:JSON结构可行性分析
Hey Ron, 你的这个JSON结构思路完全契合你描述的健身训练数据关联需求!我帮你把这个设计具体化,还补充了一些实用细节,方便你在Android开发里快速落地:
核心JSON结构示例
下面是完全匹配你需求的JSON结构,包含了有训练的日期和无训练的日期两种场景:
{ "2024-05-20": [ { "name": "杠铃卧推", "sets": [ {"weight": 40.0, "repetitions": 10}, {"weight": 40.0, "repetitions": 8}, {"weight": 35.0, "repetitions": 12} ] }, { "name": "俯卧撑", "sets": [ {"weight": 0.0, "repetitions": 15}, {"weight": 0.0, "repetitions": 12} ] } ], "2024-05-21": [], "2024-05-22": [ { "name": "硬拉", "sets": [ {"weight": 60.0, "repetitions": 6}, {"weight": 65.0, "repetitions": 4}, {"weight": 55.0, "repetitions": 8} ] } ] }
关键细节说明
- 日期格式:统一用
yyyy-MM-dd这种ISO标准格式,Android里不管用旧的SimpleDateFormat还是新的DateTimeFormatter都能轻松解析,避免因格式不统一导致的解析错误 - 空训练处理:像示例里的
2024-05-21那样用空数组[]表示当天无训练,这样你的解析逻辑可以统一处理所有日期,不用额外判断字段是否存在 - 字段约束:确保每个动作都有
name(不能为空),每组的weight(自重训练可以设为0)和repetitions都为有效数值,避免空值导致的崩溃
Android开发实用建议
- 数据类映射:用Gson或Moshi这类JSON库来快速解析/生成JSON,对应创建Kotlin数据类(Java同理):
// 单条训练记录的映射类 data class DailyWorkout( val date: String, val exercises: List<Exercise> ) // 动作类 data class Exercise( val name: String, val sets: List<WorkoutSet> ) // 组类 data class WorkoutSet( val weight: Float, val repetitions: Int )
- 存储选择:如果数据量不大,直接把整个JSON字符串存在
SharedPreferences或者内部存储的文件里就行;如果后续数据量增长,再考虑迁移到Room数据库也完全没问题
内容的提问来源于stack exchange,提问作者roncook
相关产品推荐
相关产品推荐

