健康指标 - JSON 导出格式

JSON 导出中健康指标结构的文档

Last updated: February 6, 2026

On this page

健康指标

健康指标代表由您的 Apple Health 应用和连接的设备收集的各种测量值和数据点。在 JSON 导出中,健康指标存储在 metrics 数组中。

指标名称格式

JSON 导出中的所有指标名称都使用 snake_case 格式(带下划线的小写字母)。例如:

  • "Step Count" 变为 "step_count"
  • "Blood Pressure" 变为 "blood_pressure"
  • "Heart Rate" 变为 "heart_rate"
  • "Walking + Running Distance" 变为 "walking_running_distance"

结构

metrics 数组包含对象,每个对象代表特定的健康指标类型。大多数健康指标遵循通用结构:

{
  "name": "step_count",
  "units": "count",
  "data": [
    {
      "qty": 8500,
      "date": "2024-02-06 14:30:00 -0800"
    }
  ]
}

通用字段

  • name (String): 健康指标的 snake_case 格式名称(例如:"step_count"、"heart_rate"、"active_energy")
  • units (String): 测量单位(例如:"count"、"bpm"、"kcal")
  • data (Array): 数据点数组,每个包含:
    • qty (Number): 数量值
    • date (Date): yyyy-MM-dd HH:mm:ss Z 格式的时间戳

特殊指标格式

某些健康指标具有与通用格式不同的独特结构:

血压

血压读数包括收缩压和舒张压值:

{
  "name": "blood_pressure",
  "units": "mmHg",
  "data": [
    {
      "date": "2024-02-06 14:30:00 -0800",
      "systolic": 120,
      "diastolic": 80
    }
  ]
}

字段:

  • systolic (Number): 收缩压(上)血压读数
  • diastolic (Number): 舒张压(下)血压读数

心率

心率数据包括最小值、平均值和最大值:

{
  "name": "heart_rate",
  "units": "bpm",
  "data": [
    {
      "date": "2024-02-06 14:30:00 -0800",
      "Min": 65,
      "Avg": 72,
      "Max": 85
    }
  ]
}

字段:

  • Min (Number): 测量期间的最小心率
  • Avg (Number): 测量期间的平均心率
  • Max (Number): 测量期间的最大心率

睡眠分析

睡眠数据结构根据导出设置中是否启用数据聚合而有所不同。

聚合的睡眠数据

启用聚合后,睡眠数据按天汇总:

{
  "name": "sleep_analysis",
  "units": "hr",
  "data": [
    {
      "date": "2024-02-06",
      "totalSleep": 7.5,
      "asleep": 7.0,
      "core": 3.5,
      "deep": 1.5,
      "rem": 2.0,
      "sleepStart": "2024-02-05 23:00:00 -0800",
      "sleepEnd": "2024-02-06 06:30:00 -0800",
      "inBed": 8.0,
      "inBedStart": "2024-02-05 22:45:00 -0800",
      "inBedEnd": "2024-02-06 06:45:00 -0800"
    }
  ]
}

字段:

  • totalSleep (Number): 总睡眠时间(以小时为单位)
  • asleep (Number): 任何睡眠状态的总时间
  • core (Number): 浅睡眠持续时间(以小时为单位)
  • deep (Number): 深睡眠持续时间(以小时为单位)
  • rem (Number): REM 睡眠持续时间(以小时为单位)
  • sleepStart (Date): 睡眠实际开始的时间
  • sleepEnd (Date): 睡眠实际结束的时间
  • inBed (Number): 在床上的总时间(以小时为单位)
  • inBedStart (Date): 您上床的时间
  • inBedEnd (Date): 您起床的时间

未聚合的睡眠数据

禁用聚合后,包含单独的睡眠段:

{
  "name": "sleep_analysis",
  "units": "hr",
  "data": [
    {
      "startDate": "2024-02-05 23:00:00 -0800",
      "endDate": "2024-02-05 23:30:00 -0800",
      "qty": 0.5,
      "value": "Core",
      "deep": 0.0,
      "rem": 0.0,
      "sleepStart": "2024-02-05 23:00:00 -0800",
      "sleepEnd": "2024-02-06 06:30:00 -0800",
      "inBed": 8.0,
      "inBedStart": "2024-02-05 22:45:00 -0800",
      "inBedEnd": "2024-02-06 06:45:00 -0800"
    }
  ]
}

字段:

  • startDate (Date): 睡眠段的开始时间
  • endDate (Date): 睡眠段的结束时间
  • qty (Number): 段的持续时间(以小时为单位)
  • value (String): 睡眠状态 - 以下之一:
    • "Awake"
    • "Asleep"(未分类的睡眠阶段)
    • "In Bed"
    • "Core"
    • "REM"
    • "Deep"
    • "Unspecified"

注意: "Asleep" 指的是未分类的睡眠阶段(而不是总睡眠时间)。如果数据源不支持睡眠阶段跟踪,则可能发生这种情况。

血糖

血糖读数包括进餐时间信息:

{
  "name": "blood_glucose",
  "units": "mg/dL",
  "data": [
    {
      "date": "2024-02-06 08:00:00 -0800",
      "qty": 95,
      "mealTime": "Before Meal"
    }
  ]
}

字段:

  • qty (Number): 血糖水平
  • mealTime (String): 以下之一:
    • "Before Meal"
    • "After Meal"
    • "Unspecified"

性活动

性活动条目跟踪保护措施的使用:

{
  "name": "sexual_activity",
  "units": "count",
  "data": [
    {
      "date": "2024-02-06 20:00:00 -0800",
      "Unspecified": 0,
      "Protection Used": 1,
      "Protection Not Used": 0
    }
  ]
}

字段:

  • Unspecified (Number): 保护状态未知时的计数
  • Protection Used (Number): 使用保护时的计数
  • Protection Not Used (Number): 未使用保护时的计数

洗手

洗手事件跟踪完成状态:

{
  "name": "handwashing",
  "units": "count",
  "data": [
    {
      "date": "2024-02-06 12:00:00 -0800",
      "qty": 1,
      "value": "Complete"
    }
  ]
}

字段:

  • qty (Number): 洗手事件的数量
  • value (String): 以下之一:
    • "Complete"
    • "Incomplete"

刷牙

刷牙事件跟踪完成状态:

{
  "name": "toothbrushing",
  "units": "count",
  "data": [
    {
      "date": "2024-02-06 08:00:00 -0800",
      "qty": 1,
      "value": "Complete"
    }
  ]
}

字段:

  • qty (Number): 刷牙事件的数量
  • value (String): 以下之一:
    • "Complete"
    • "Incomplete"

胰岛素给药

胰岛素给药条目包括给药原因:

{
  "name": "insulin_delivery",
  "units": "IU",
  "data": [
    {
      "date": "2024-02-06 08:00:00 -0800",
      "qty": 5,
      "reason": "Bolus"
    }
  ]
}

字段:

  • qty (Number): 给药的胰岛素量
  • reason (String): 以下之一:
    • "Bolus"(餐时胰岛素)
    • "Basal"(基础胰岛素)

常见健康指标

一些常见的导出健康指标包括(所有指标名称均为 snake_case 格式):

  • step_count - 每日步数
  • walking_running_distance - 移动距离
  • active_energy - 通过活动消耗的卡路里
  • resting_heart_rate - 静息心率
  • heart_rate - 心率测量
  • respiratory_rate - 呼吸频率
  • body_temperature - 体温读数
  • blood_oxygen_saturation - SpO2 水平
  • weight_&_body_mass - 体重测量
  • body_mass_index - 计算的 BMI 值
  • height - 身高测量
  • dietary_water - 液体摄入量
  • mindful_minutes - 冥想或正念时间

提示

  • 时间分组: 使用导出配置中的时间分组设置来控制数据的聚合方式(按秒、分钟、小时、天等)
  • 数据聚合: 启用数据聚合以按天汇总睡眠和其他指标,以便于分析
  • 选择性导出: 您可以选择在导出中包含哪些特定的健康指标,以减少文件大小和处理时间

相关文档