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 treningu
  • name (String): Nazwa typu treningu (np. "Running", "Cycling", "Swimming")
  • start (Date): Czas rozpoczęcia treningu w formacie yyyy-MM-dd HH:mm:ss Z
  • end (Date): Czas zakończenia treningu w formacie yyyy-MM-dd HH:mm:ss Z
  • duration (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 treningu
  • totalEnergy (Object): Całkowite kalorie (aktywne + spoczynkowe) spalone
  • intensity (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 dystans
  • speed (Object): Aktualna lub średnia prędkość
  • avgSpeed (Object): Średnia prędkość podczas całego treningu
  • maxSpeed (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ści
  • elevationDown (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 treningu
  • humidity (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 basenu
  • strokeStyle (String): Jeden z:
    • "Backstroke"
    • "Breaststroke"
    • "Butterfly"
    • "Freestyle"
    • "Mixed"
    • "Kickboard"
    • "Unknown"
  • swolfScore (Number): Wynik efektywności pływania
  • salinity (String): "Fresh Water" lub "Salt Water"
  • totalSwimmingStrokeCount (Object): Całkowita liczba ruchów pływackich
  • swimCadence (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 czasie
  • stepCadence (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ętnem
  • maxHeartRate (Object): Maksymalne tętno podczas treningu
  • avgHeartRate (Object): Średnie tętno podczas treningu
  • heartRateData (Array): Szczegółowe pomiary tętna podczas całego treningu
  • heartRateRecovery (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 pomiaru
  • qty (Number): Wartość ilości
  • units (String): Jednostka miary
  • source (String, opcjonalne): Urządzenie lub aplikacja źródłowa danych

Struktura HeartRateData:

  • date (Date): Znacznik czasu pomiaru
  • Min (Number): Minimalne tętno
  • Avg (Number): Średnie tętno
  • Max (Number): Maksymalne tętno
  • units (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 GPS
  • longitude (Number): Współrzędna długości geograficznej GPS
  • altitude (Number): Wysokość w metrach
  • course (Number): Kierunek podróży w stopniach (0-360)
  • courseAccuracy (Number): Dokładność pomiaru kursu w stopniach
  • horizontalAccuracy (Number): Dokładność pozycji poziomej w metrach
  • verticalAccuracy (Number): Dokładność pozycji pionowej w metrach
  • timestamp (Date): Czas, w którym lokalizacja została zarejestrowana
  • speed (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

Powiązana Dokumentacja