Справочный центр HealthyApps
Русский
Справочный центр
Основной сайт ↗

Поиск по справке

Тренировки - формат экспорта JSON

Документация по структуре тренировок в экспортах JSON

Последнее обновление: 31 октября 2026 г.

На этой странице
Версии экспорта
Тренировки: версия 2 Тренировки: версия 2 Базовая структураОбязательные поляНеобязательные поляГруппировка по времени метрик тренировок
Тренировки: версия 1 (legacy) Тренировки: версия 1 (legacy) Структура версии 1
Связанная документация

Экспорты JSON хранят тренировки в массиве workouts.

Версии экспорта

Health Auto Export поддерживает две версии экспорта тренировок:

  • Версия 2 (рекомендуется): расширенный формат с более подробными метаданными и структурированными данными
  • Версия 1 (legacy): старый формат, сохранённый для совместимости с существующими рабочими процессами

Тренировки: версия 2

Версия 2 включает следующие обязательные поля и необязательные данные. Примеры используют выключенный Локализовать единицы; включение может изменить метки единиц в сериях метрик.

Базовая структура

{
  "id": "550e8400-e29b-41d4-a716-446655440000",
  "name": "Running",
  "start": "2024-02-06 07:00:00 -0800",
  "end": "2024-02-06 07:30:00 -0800",
  "duration": 1800
}

Обязательные поля

  • id (String): уникальный идентификатор тренировки
  • name (String): имя типа тренировки (например, "Running", "Cycling", "Swimming")
  • start (Date): время начала тренировки в формате yyyy-MM-dd HH:mm:ss Z
  • end (Date): время конца тренировки в формате yyyy-MM-dd HH:mm:ss Z
  • duration (Number): длительность тренировки в секундах

Необязательные поля

Необязательные поля зависят от доступных данных и выбора экспорта:

Источник записи

{
  "source": {
    "name": "Workout App",
    "identifier": "com.example.workouts"
  }
}
  • source (Object): приложение или устройство, записавшее тренировку, с именем и идентификатором приложения. Отдельные показания метрик имеют отдельные строки источника и могут поступать из другого приложения или устройства.

Сведения о местоположении

{
  "location": "Outdoor",
  "isIndoor": false
}
  • location (String): одно из "Indoor", "Outdoor", "Pool", "Open Water"
  • isIndoor (Boolean): выполнялась ли тренировка в помещении

Энергия и интенсивность

{
  "activeEnergyBurned": {
    "qty": 350,
    "units": "kcal"
  },
  "totalEnergy": {
    "qty": 450,
    "units": "kcal"
  },
  "intensity": {
    "qty": 8.5,
    "units": "kcal/hr\u00b7kg"
  }
}
  • activeEnergyBurned (Object): активные калории, сожжённые во время тренировки
  • totalEnergy (Object): общие калории (активные + в покое), сожжённые
  • intensity (Object): значение metabolic equivalent of task (MET)

Дистанция и скорость

{
  "distance": {
    "qty": 3.5,
    "units": "mi"
  }
}
  • distance (Object): общая пройденная дистанция
  • speed (Object): средняя скорость, рассчитанная из дистанции и длительности
  • avgSpeed (Object): средняя скорость на протяжении тренировки
  • maxSpeed (Object): максимальная достигнутая скорость

Каждый объект включает qty и units.

Высота

{
  "elevationUp": {
    "qty": 500,
    "units": "ft"
  },
  "elevationDown": {
    "qty": 450,
    "units": "ft"
  }
}
  • elevationUp (Object): общий набор высоты
  • elevationDown (Object): общая потеря высоты

Единицы: "ft" (футы) или "m" (метры)

Данные окружающей среды

{
  "temperature": {
    "qty": 72,
    "units": "degF"
  },
  "humidity": {
    "qty": 65,
    "units": "%"
  }
}
  • temperature (Object): температура окружающей среды во время тренировки
  • humidity (Object): относительная влажность в процентах

Единицы температуры: "degF" (Фаренгейт) или "degC" (Цельсий)

Поля для плавания

{
  "lapLength": {
    "qty": 0.025,
    "units": "mi"
  },
  "strokeStyle": "Freestyle",
  "swolfScore": 45,
  "salinity": "Fresh Water",
  "totalSwimmingStrokeCount": {
    "qty": 1200,
    "units": "count"
  },
  "swimCadence": {
    "qty": 30,
    "units": "count/min"
  }
}
  • lapLength (Object): длина каждого круга
  • strokeStyle (String): одно из:
    • "Backstroke"
    • "Breaststroke"
    • "Butterfly"
    • "Freestyle"
    • "Mixed"
    • "Kickboard"
    • "Unknown"
  • swolfScore (Number): оценка эффективности плавания
  • salinity (String): "Fresh Water" или "Salt Water"
  • totalSwimmingStrokeCount (Object): общее число гребков
  • swimCadence (Object): гребки в минуту

Данные шагов и каденса

{
  "stepCount": [
    {
      "date": "2024-02-06 07:00:00 -0800",
      "qty": 5000,
      "units": "count",
      "source": "Apple Watch"
    }
  ],
  "stepCadence": {
    "qty": 180,
    "units": "count/min"
  },
  "flightsClimbed": {
    "qty": 10,
    "units": "count"
  }
}
  • stepCount (Array): массив измерений числа шагов во времени
  • stepCadence (Object): шаги в минуту
  • flightsClimbed (Object): число пройденных лестничных пролётов

Данные пульса

{
  "heartRate": {
    "min": {
      "qty": 120,
      "units": "count/min"
    },
    "avg": {
      "qty": 150,
      "units": "count/min"
    },
    "max": {
      "qty": 175,
      "units": "count/min"
    }
  },
  "maxHeartRate": {
    "qty": 175,
    "units": "count/min"
  },
  "avgHeartRate": {
    "qty": 150,
    "units": "count/min"
  },
  "heartRateData": [
    {
      "date": "2024-02-06 07:00:00 -0800",
      "Min": 120,
      "Avg": 150,
      "Max": 175,
      "units": "count/min",
      "source": "Apple Watch"
    }
  ],
  "heartRateRecovery": [
    {
      "date": "2024-02-06 07:30:00 -0800",
      "Min": 140,
      "Avg": 145,
      "Max": 150,
      "units": "count/min",
      "source": "Apple Watch"
    }
  ]
}
  • heartRate (Object): сводка с мин., средним и макс. пульсом во время тренировки
  • maxHeartRate (Object): максимальный пульс во время тренировки
  • avgHeartRate (Object): средний пульс во время тренировки
  • heartRateData (Array): подробные измерения с тренировки, заканчивающиеся, когда заканчивается тренировка
  • heartRateRecovery (Array): отдельные измерения из двух минут сразу после окончания тренировки

Сводный пульс использует записанные значения тренировки, когда доступны, с откатом к показаниям пульса тренировки. Экспортированные показания включают измерения, сделанные во время пауз, поэтому их пики и средние могут отличаться от сводки.

Массивы данных временных рядов

Многие метрики могут включаться как массивы временных рядов, когда включено «Включить показатели тренировки»:

{
  "activeEnergy": [
    {
      "date": "2024-02-06 07:00:00 -0800",
      "qty": 50,
      "units": "kcal",
      "source": "Apple Watch"
    }
  ],
  "basalEnergy": [
    {
      "date": "2024-02-06 07:00:00 -0800",
      "qty": 20,
      "units": "kcal",
      "source": "Apple Watch"
    }
  ],
  "cyclingCadence": [
    {
      "date": "2024-02-06 07:00:00 -0800",
      "qty": 90,
      "units": "count/min",
      "source": "Apple Watch"
    }
  ],
  "cyclingDistance": [
    {
      "date": "2024-02-06 07:00:00 -0800",
      "qty": 0.5,
      "units": "mi",
      "source": "Apple Watch"
    }
  ],
  "cyclingPower": [
    {
      "date": "2024-02-06 07:00:00 -0800",
      "qty": 200,
      "units": "W",
      "source": "Power Meter"
    }
  ],
  "cyclingSpeed": [
    {
      "date": "2024-02-06 07:00:00 -0800",
      "qty": 18,
      "units": "mi/hr",
      "source": "Apple Watch"
    }
  ],
  "swimDistance": [
    {
      "date": "2024-02-06 07:00:00 -0800",
      "qty": 25,
      "units": "yd",
      "source": "Apple Watch"
    }
  ],
  "swimStroke": [
    {
      "date": "2024-02-06 07:00:00 -0800",
      "qty": 20,
      "units": "count",
      "source": "Apple Watch"
    }
  ],
  "walkingAndRunningDistance": [
    {
      "date": "2024-02-06 07:00:00 -0800",
      "qty": 0.25,
      "units": "mi",
      "source": "Apple Watch"
    }
  ]
}

Структура QuantityData:

  • date (Date): метка времени измерения
  • qty (Number): значение количества
  • units (String): единица измерения
  • source (String, необязательно): устройство или приложение источника данных

Структура HeartRateData:

  • date (Date): метка времени измерения
  • Min (Number): минимальный пульс
  • Avg (Number): средний пульс
  • Max (Number): максимальный пульс
  • units (String): единица (count/min при выключенном Локализовать единицы)
  • source (String, необязательно): устройство или приложение источника данных

Данные маршрута

Когда Включить данные маршрута включено и у тренировки есть GPS-данные:

{
  "route": [
    {
      "latitude": 37.7749,
      "longitude": -122.4194,
      "altitude": 50.5,
      "course": 45.0,
      "courseAccuracy": 5.0,
      "horizontalAccuracy": 10.0,
      "verticalAccuracy": 15.0,
      "timestamp": "2024-02-06 07:00:00 -0800",
      "speed": 7.0,
      "speedAccuracy": 0.5
    }
  ]
}

Поля местоположения:

  • latitude (Number): координата широты GPS
  • longitude (Number): координата долготы GPS
  • altitude (Number): высота в метрах
  • course (Number): направление движения в градусах (0–360)
  • courseAccuracy (Number): точность измерения курса в градусах
  • horizontalAccuracy (Number): точность горизонтального положения в метрах
  • verticalAccuracy (Number): точность вертикального положения в метрах
  • timestamp (Date): время записи местоположения
  • speed (Number): скорость в метрах в секунду
  • speedAccuracy (Number): точность измерения скорости в м/с

Метаданные

{
  "metadata": {
    "customField": {
      "label": "value",
      "quantity": 123
    },
    "anotherField": [
      1,
      2,
      3
    ]
  }
}
  • metadata (Object): дополнительные пользовательские метаданные, связанные с тренировкой

События, активности и сплиты

Экспорты JSON и Markdown версии 2 могут включать events, segments, laps и activities, записанные приложением тренировок. Они остаются доступны, когда Включить показатели тренировки выключено. CSV и GPX не включают эти записи.

При включённом Включить показатели тренировки и выбранных соответствующих метриках интервалы могут также включать дистанцию, активную энергию, сводки пульса и темп или скорость активного времени. Значения различают записанные измерения и оценки; недоступные значения опускаются.

При выбранной дистанции splits могут включать оценочные километровые и мильные сплиты. Они могут отличаться от сплитов записывающего приложения, а финальный сплит помечается как частичный, когда короче целевой дистанции. Отсутствующие показания дистанции или неподдерживаемые типы тренировок могут помешать расчёту сплитов.

Оценки усилия тренировки

Экспорты JSON и Markdown версии 2 могут включать выбранные значения Оценка усилий при тренировке (effortScore) и Оценочная оценка усилий при тренировке (estimatedEffortScore). Каждое — объект с qty и units: "appleEffortScore".

Оценки требуют iOS 18 или новее и доступ к соответствующим данным в Apple Health. Оценки всей тренировки и активностей раздельные. Они независимы от Группировка по времени и Включить показатели тренировки; CSV их не включает.

В Обзор → Тренировки откройте лист экспорта списка или настройки экспорта версии 2 тренировки, затем используйте Выберите поля для экспорта, чтобы выбрать оценки усилия перед экспортом.

Группировка по времени метрик тренировок

При использовании экспорта версии 2 и включённом «Включить показатели тренировки» вы можете контролировать детализацию данных временных рядов:

  • Минуты: группирует метрики тренировок по минутным меткам часов. Первая и последняя минута могут включать несколько секунд сразу до начала тренировки или сразу после её конца.
  • Секунды: группирует метрики тренировок по секундным меткам часов, каждая метка отмечает начало своей секунды. Первая и последняя секунда могут включать долю секунды сразу вне тренировки. Файлы больше, чем при группировке по минутам.

Активная и энергия в покое используют те же комбинированные итоги, что и другие метрики тренировок в каждой временной группе. Показания с нескольких устройств или приложений включаются вместе.

Тренировки: версия 1 (legacy)

Версия 1 использует более простую структуру. Для новых экспортов рекомендуется версия 2.

Структура версии 1

{
  "name": "Running",
  "start": "2024-02-06 07:00:00 -0800",
  "end": "2024-02-06 07:30:00 -0800",
  "totalEnergy": {
    "qty": 450,
    "units": "kcal"
  },
  "activeEnergy": {
    "qty": 350,
    "units": "kcal"
  },
  "distance": {
    "qty": 3.5,
    "units": "mi"
  },
  "heartRateData": [
    {
      "date": "2024-02-06 07:00:00 -0800",
      "qty": 150,
      "units": "bpm"
    }
  ],
  "route": [
    {
      "lat": 37.7749,
      "lon": -122.4194,
      "altitude": 50.5,
      "timestamp": "2024-02-06 07:00:00 -0800"
    }
  ]
}

Связанная документация