Trainingseinheiten - JSON-Exportformat
Dokumentation zur Struktur von Trainingseinheiten in JSON-Exporten
Last updated: February 6, 2026
On this page
Trainingseinheiten
Trainingsdaten umfassen alle Ihre in Apple Health aufgezeichneten Trainingssitzungen, wie Laufen, Radfahren, Schwimmen, Krafttraining und mehr. In JSON-Exporten werden Trainingseinheiten im Array workouts gespeichert.
Exportversionen
Health Auto Export unterstützt zwei Workout-Exportversionen:
- Version 2 (Empfohlen): Erweitertes Format mit detaillierteren Metadaten und strukturierten Daten
- Version 1 (Legacy): Älteres Format, das für die Kompatibilität mit bestehenden Workflows beibehalten wird
Trainingseinheiten Version 2
Version 2 bietet eine umfassende Struktur mit optionalen Feldern, die nur enthalten sind, wenn Daten verfügbar sind.
Grundstruktur
{
"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
}
Erforderliche Felder
id(String): Eindeutiger Bezeichner für die Trainingseinheitname(String): Name des Trainingstyps (z.B. "Running", "Cycling", "Swimming")start(Date): Startzeit der Trainingseinheit im Formatyyyy-MM-dd HH:mm:ss Zend(Date): Endzeit der Trainingseinheit im Formatyyyy-MM-dd HH:mm:ss Zduration(Number): Dauer der Trainingseinheit in Sekunden
Optionale Felder
Die folgenden Felder werden nur enthalten, wenn Daten verfügbar sind:
Standortinformationen
{
"location": "Outdoor",
"isIndoor": false
}
location(String): Eines von"Indoor","Outdoor","Pool","Open Water"isIndoor(Boolean): Ob das Training in Innenräumen durchgeführt wurde
Energie und Intensität
{
"activeEnergyBurned": {
"qty": 350,
"units": "kcal"
},
"totalEnergy": {
"qty": 450,
"units": "kcal"
},
"intensity": {
"qty": 8.5,
"units": "MET"
}
}
activeEnergyBurned(Object): Während des Trainings verbrannte aktive KalorientotalEnergy(Object): Verbrannte Gesamtkalorien (aktiv + Ruhe)intensity(Object): Metabolisches Äquivalent der Aufgabe (MET)-Wert
Distanz und Geschwindigkeit
{
"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): Zurückgelegte Gesamtdistanzspeed(Object): Aktuelle oder durchschnittliche GeschwindigkeitavgSpeed(Object): Durchschnittliche Geschwindigkeit während des gesamten TrainingsmaxSpeed(Object): Erreichte maximale Geschwindigkeit
Einheiten:
- Distanz:
"mi"(Meilen) oder"km"(Kilometer) - Geschwindigkeit:
"mph"(Meilen pro Stunde) oder"kmph"(Kilometer pro Stunde)
Höhe
{
"elevationUp": {
"qty": 500,
"units": "ft"
},
"elevationDown": {
"qty": 450,
"units": "ft"
}
}
elevationUp(Object): Gesamter HöhengewinnelevationDown(Object): Gesamter Höhenverlust
Einheiten: "ft" (Fuß) oder "m" (Meter)
Umgebungsdaten
{
"temperature": {
"qty": 72,
"units": "degF"
},
"humidity": {
"qty": 65,
"units": "%"
}
}
temperature(Object): Umgebungstemperatur während des Trainingshumidity(Object): Relative Luftfeuchtigkeit in Prozent
Temperatureinheiten: "degF" (Fahrenheit) oder "degC" (Celsius)
Schwimmspezifische Felder
{
"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): Länge jeder RundestrokeStyle(String): Eines von:"Backstroke""Breaststroke""Butterfly""Freestyle""Mixed""Kickboard""Unknown"
swolfScore(Number): Schwimmeffizienz-Scoresalinity(String):"Fresh Water"oder"Salt Water"totalSwimmingStrokeCount(Object): Gesamtzahl der SchwimmschlägeswimCadence(Object): Schwimmschläge pro Minute
Schritt- und Kadenzdaten
{
"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): Array von Schrittzählmessungen über die ZeitstepCadence(Object): Schritte pro MinuteflightsClimbed(Object): Anzahl der gestiegenen Treppenabsätze
Herzfrequenzdaten
{
"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): Zusammenfassung mit min, avg und max HerzfrequenzmaxHeartRate(Object): Maximale Herzfrequenz während des TrainingsavgHeartRate(Object): Durchschnittliche Herzfrequenz während des TrainingsheartRateData(Array): Detaillierte Herzfrequenzmessungen während des gesamten TrainingsheartRateRecovery(Array): Herzfrequenzmessungen während der Erholungsphase
Zeitreihen-Datenarrays
Viele Metriken können als Zeitreihen-Arrays enthalten sein, wenn "Trainingsmetriken einschließen" aktiviert ist:
{
"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"
}
]
}
QuantityData-Struktur:
date(Date): Zeitstempel der Messungqty(Number): Mengenwertunits(String): Maßeinheitsource(String, optional): Datenquellengerät oder -app
HeartRateData-Struktur:
date(Date): Zeitstempel der MessungMin(Number): Minimale HerzfrequenzAvg(Number): Durchschnittliche HerzfrequenzMax(Number): Maximale Herzfrequenzunits(String): Einheit (typischerweise "bpm")source(String, optional): Datenquellengerät oder -app
Routendaten
Wenn "Routendaten einschließen" aktiviert ist und das Training GPS-Daten hat:
{
"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
}
]
}
Standortfelder:
latitude(Number): GPS-Breitengradkoordinatelongitude(Number): GPS-Längengradkoordinatealtitude(Number): Höhe in Meterncourse(Number): Fahrtrichtung in Grad (0-360)courseAccuracy(Number): Genauigkeit der Kursmessung in GradhorizontalAccuracy(Number): Horizontale Positionsgenauigkeit in MeternverticalAccuracy(Number): Vertikale Positionsgenauigkeit in Meterntimestamp(Date): Zeitpunkt, zu dem der Standort aufgezeichnet wurdespeed(Number): Geschwindigkeit in Metern pro SekundespeedAccuracy(Number): Genauigkeit der Geschwindigkeitsmessung in m/s
Metadaten
{
"metadata": {
"customField": "value",
"anotherField": 123
}
}
metadata(Object): Zusätzliche benutzerdefinierte Metadaten, die dem Training zugeordnet sind
Trainingseinheiten Version 1 (Legacy)
Version 1 verwendet eine einfachere Struktur. Für neue Exporte wird Version 2 empfohlen.
Version 1 Struktur
{
"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"
}
]
}
Zeitgruppierung von Trainingsmetriken
Bei Verwendung von Exportversion 2 und wenn "Trainingsmetriken einschließen" aktiviert ist, können Sie die Granularität der Zeitreihendaten steuern:
- Minuten: Gruppiert Trainingsmetriken nach Minutenintervallen
- Sekunden: Gruppiert Trainingsmetriken nach Sekundenintervallen (detaillierter, größere Dateigröße)
Tipps
- Routendaten einschließen: Aktivieren Sie diese Option, um GPS-Routeninformationen für Outdoor-Trainings zu erhalten
- Trainingsmetriken einschließen: Aktivieren Sie dies, um detaillierte Zeitreihendaten für Metriken wie Herzfrequenz, Leistung und Kadenz zu erhalten
- Exportversion: Verwenden Sie Version 2 für die umfassendste Datenstruktur
- GPX-Export: Routendaten können auch als separate GPX-Dateien für die Verwendung in Kartierungsanwendungen exportiert werden