Treningi - Format Eksportu JSON
Dokumentacja dotycząca struktury treningów w eksportach JSON
Last updated: February 6, 2026
On this page
Treningi
Dane treningowe obejmują wszystkie sesje ćwiczeń zarejestrowane w Apple Health, takie jak bieganie, jazda na rowerze, pływanie, trening siłowy i więcej. W eksportach JSON treningi są przechowywane w tablicy workouts.
Wersje Eksportu
Health Auto Export obsługuje dwie wersje eksportu treningów:
- Wersja 2 (Zalecana): Ulepszony format z bardziej szczegółowymi metadanymi i ustrukturyzowanymi danymi
- Wersja 1 (Legacy): Starszy format utrzymywany dla kompatybilności z istniejącymi przepływami pracy
Treningi Wersja 2
Wersja 2 zapewnia kompleksową strukturę z polami opcjonalnymi, które są uwzględniane tylko wtedy, gdy dane są dostępne.
Podstawowa Struktura
{
"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
}
Wymagane Pola
id(String): Unikalny identyfikator treninguname(String): Nazwa typu treningu (np. "Running", "Cycling", "Swimming")start(Date): Czas rozpoczęcia treningu w formacieyyyy-MM-dd HH:mm:ss Zend(Date): Czas zakończenia treningu w formacieyyyy-MM-dd HH:mm:ss Zduration(Number): Czas trwania treningu w sekundach
Pola Opcjonalne
Następujące pola są uwzględniane tylko wtedy, gdy dane są dostępne:
Informacje o Lokalizacji
{
"location": "Outdoor",
"isIndoor": false
}
location(String): Jeden z"Indoor","Outdoor","Pool","Open Water"isIndoor(Boolean): Czy trening został wykonany w pomieszczeniu
Energia i Intensywność
{
"activeEnergyBurned": {
"qty": 350,
"units": "kcal"
},
"totalEnergy": {
"qty": 450,
"units": "kcal"
},
"intensity": {
"qty": 8.5,
"units": "MET"
}
}
activeEnergyBurned(Object): Aktywne kalorie spalone podczas treningutotalEnergy(Object): Całkowite kalorie (aktywne + spoczynkowe) spaloneintensity(Object): Wartość równoważnika metabolicznego zadania (MET)
Dystans i Prędkość
{
"distance": {
"qty": 3.5,
"units": "mi"
},
"speed": {
"qty": 7.0,
"units": "mph"
},
"avgSpeed": {
"qty": 7.0,
"units": "mph"
},
"maxSpeed": {
"qty": 8.5,
"units": "mph"
}
}
distance(Object): Całkowity przebyty dystansspeed(Object): Aktualna lub średnia prędkośćavgSpeed(Object): Średnia prędkość podczas całego treningumaxSpeed(Object): Maksymalna osiągnięta prędkość
Jednostki:
- Dystans:
"mi"(mile) lub"km"(kilometry) - Prędkość:
"mph"(mile na godzinę) lub"kmph"(kilometry na godzinę)
Wysokość
{
"elevationUp": {
"qty": 500,
"units": "ft"
},
"elevationDown": {
"qty": 450,
"units": "ft"
}
}
elevationUp(Object): Całkowity zysk wysokościelevationDown(Object): Całkowita strata wysokości
Jednostki: "ft" (stopy) lub "m" (metry)
Dane Środowiskowe
{
"temperature": {
"qty": 72,
"units": "degF"
},
"humidity": {
"qty": 65,
"units": "%"
}
}
temperature(Object): Temperatura otoczenia podczas treninguhumidity(Object): Procent względnej wilgotności
Jednostki Temperatury: "degF" (Fahrenheit) lub "degC" (Celsjusz)
Pola Specyficzne dla Pływania
{
"lapLength": {
"qty": 0.025,
"units": "mi"
},
"strokeStyle": "Freestyle",
"swolfScore": 45,
"salinity": "Fresh Water",
"totalSwimmingStrokeCount": {
"qty": 1200,
"units": "count"
},
"swimCadence": {
"qty": 30,
"units": "spm"
}
}
lapLength(Object): Długość każdego basenustrokeStyle(String): Jeden z:"Backstroke""Breaststroke""Butterfly""Freestyle""Mixed""Kickboard""Unknown"
swolfScore(Number): Wynik efektywności pływaniasalinity(String):"Fresh Water"lub"Salt Water"totalSwimmingStrokeCount(Object): Całkowita liczba ruchów pływackichswimCadence(Object): Ruchy pływackie na minutę
Dane Kroków i Kadencji
{
"stepCount": [
{
"date": "2024-02-06 07:00:00 -0800",
"qty": 5000,
"units": "count",
"source": "Apple Watch"
}
],
"stepCadence": {
"qty": 180,
"units": "spm"
},
"flightsClimbed": {
"qty": 10,
"units": "count"
}
}
stepCount(Array): Tablica pomiarów liczby kroków w czasiestepCadence(Object): Kroki na minutęflightsClimbed(Object): Liczba przebytych pięter schodów
Dane Tętna
{
"heartRate": {
"min": {
"qty": 120,
"units": "bpm"
},
"avg": {
"qty": 150,
"units": "bpm"
},
"max": {
"qty": 175,
"units": "bpm"
}
},
"maxHeartRate": {
"qty": 175,
"units": "bpm"
},
"avgHeartRate": {
"qty": 150,
"units": "bpm"
},
"heartRateData": [
{
"date": "2024-02-06 07:00:00 -0800",
"Min": 120,
"Avg": 150,
"Max": 175,
"units": "bpm",
"source": "Apple Watch"
}
],
"heartRateRecovery": [
{
"date": "2024-02-06 07:30:00 -0800",
"Min": 140,
"Avg": 145,
"Max": 150,
"units": "bpm",
"source": "Apple Watch"
}
]
}
heartRate(Object): Podsumowanie z minimalnym, średnim i maksymalnym tętnemmaxHeartRate(Object): Maksymalne tętno podczas treninguavgHeartRate(Object): Średnie tętno podczas treninguheartRateData(Array): Szczegółowe pomiary tętna podczas całego treninguheartRateRecovery(Array): Pomiary tętna podczas okresu regeneracji
Tablice Danych Czasowych
Wiele metryk może być uwzględnionych jako tablice danych czasowych, gdy "Uwzględnij Metryki Treningu" jest włączone:
{
"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": "rpm",
"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": "mph",
"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"
}
]
}
Struktura QuantityData:
date(Date): Znacznik czasu pomiaruqty(Number): Wartość ilościunits(String): Jednostka miarysource(String, opcjonalne): Urządzenie lub aplikacja źródłowa danych
Struktura HeartRateData:
date(Date): Znacznik czasu pomiaruMin(Number): Minimalne tętnoAvg(Number): Średnie tętnoMax(Number): Maksymalne tętnounits(String): Jednostka (zwykle "bpm")source(String, opcjonalne): Urządzenie lub aplikacja źródłowa danych
Dane Trasy
Gdy "Uwzględnij Dane Trasy" jest włączone i trening ma dane 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
}
]
}
Pola Lokalizacji:
latitude(Number): Współrzędna szerokości geograficznej GPSlongitude(Number): Współrzędna długości geograficznej GPSaltitude(Number): Wysokość w metrachcourse(Number): Kierunek podróży w stopniach (0-360)courseAccuracy(Number): Dokładność pomiaru kursu w stopniachhorizontalAccuracy(Number): Dokładność pozycji poziomej w metrachverticalAccuracy(Number): Dokładność pozycji pionowej w metrachtimestamp(Date): Czas, w którym lokalizacja została zarejestrowanaspeed(Number): Prędkość w metrach na sekundęspeedAccuracy(Number): Dokładność pomiaru prędkości w m/s
Metadane
{
"metadata": {
"customField": "value",
"anotherField": 123
}
}
metadata(Object): Dodatkowe niestandardowe metadane powiązane z treningiem
Treningi Wersja 1 (Legacy)
Wersja 1 używa prostszej struktury. Dla nowych eksportów zalecana jest Wersja 2.
Struktura Wersji 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": "count"
}
],
"route": [
{
"lat": 37.7749,
"lon": -122.4194,
"altitude": 50.5,
"timestamp": "2024-02-06 07:00:00 -0800"
}
]
}
Grupowanie Czasowe Metryk Treningu
Podczas używania Wersji 2 Eksportu i gdy "Uwzględnij Metryki Treningu" jest włączone, możesz kontrolować szczegółowość danych czasowych:
- Minuty: Grupuje metryki treningu według interwałów minutowych
- Sekundy: Grupuje metryki treningu według interwałów sekundowych (bardziej szczegółowe, większy rozmiar pliku)
Wskazówki
- Uwzględnij Dane Trasy: Włącz tę opcję, aby uzyskać informacje o trasie GPS dla treningów na świeżym powietrzu
- Uwzględnij Metryki Treningu: Włącz to, aby uzyskać szczegółowe dane czasowe dla metryk takich jak tętno, moc i kadencja
- Wersja Eksportu: Użyj Wersji 2 dla najbardziej kompleksowej struktury danych
- Eksport GPX: Dane trasy mogą być również eksportowane jako oddzielne pliki GPX do użycia w aplikacjach mapowych