You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 04:18:11