Edzések - JSON exportformátum
Dokumentáció az edzések szerkezetéről JSON-exportokban
Utoljára frissítve: 2026. október 31.
Ezen az oldalon
A JSON-exportok az edzéseket a workouts tömbben tárolják.
Exportverziók
A Health Auto Export két edzés-exportverziót támogat:
- 2. verzió (Ajánlott): Bővített formátum részletesebb metaadatokkal és strukturált adatokkal
- 1. verzió (Legacy): Régebbi formátum, a meglévő munkafolyamatokkal való kompatibilitás miatt fenntartva
Edzések 2. verzió
A 2. verzió a következő kötelező mezőket és opcionális adatokat tartalmazza. A példák a Mértékegységek lokalizálása kikapcsolt állapotát használják; bekapcsolása megváltoztathatja a mértékegységneveket a metrikasorozatokban.
Alapszerkezet
{
"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
}
Kötelező mezők
id(String): Az edzés egyedi azonosítójaname(String): Az edzéstípus neve (pl. "Running", "Cycling", "Swimming")start(Date): Az edzés kezdőidejeyyyy-MM-dd HH:mm:ss Zformátumbanend(Date): Az edzés záróidejeyyyy-MM-dd HH:mm:ss Zformátumbanduration(Number): Az edzés időtartama másodpercben
Opcionális mezők
Az opcionális mezők a rendelkezésre álló adatoktól és az exportválasztásaitól függnek:
Rögzítési forrás
{
"source": {
"name": "Workout App",
"identifier": "com.example.workouts"
}
}
source(Object): Az edzést rögzítő alkalmazás vagy eszköz, a nevével és alkalmazásazonosítójával. Az egyedi metrikaleolvasásoknak külön forrásstringjeik vannak, és másik alkalmazásból vagy eszközről származhatnak.
Helyszíninformáció
{
"location": "Outdoor",
"isIndoor": false
}
location(String): Az alábbiak egyike:"Indoor","Outdoor","Pool","Open Water"isIndoor(Boolean): Az edzés beltérben zajlott-e
Energia és intenzitás
{
"activeEnergyBurned": {
"qty": 350,
"units": "kcal"
},
"totalEnergy": {
"qty": 450,
"units": "kcal"
},
"intensity": {
"qty": 8.5,
"units": "kcal/hr\u00b7kg"
}
}
activeEnergyBurned(Object): Az edzés alatt elégetett aktív kalóriáktotalEnergy(Object): Összes elégetett kalória (aktív + pihenő)intensity(Object): Metabolikus egyenérték (MET) érték
Távolság és sebesség
{
"distance": {
"qty": 3.5,
"units": "mi"
}
}
distance(Object): Teljes megtett távolságspeed(Object): Átlagsebesség a távolságból és időtartamból számítvaavgSpeed(Object): Átlagsebesség a teljes edzés alattmaxSpeed(Object): Elért maximális sebesség
Minden objektum tartalmazza a qty és units mezőket.
Magasság
{
"elevationUp": {
"qty": 500,
"units": "ft"
},
"elevationDown": {
"qty": 450,
"units": "ft"
}
}
elevationUp(Object): Teljes emelkedéselevationDown(Object): Teljes ereszkedés
Egységek: "ft" (láb) vagy "m" (méter)
Környezeti adatok
{
"temperature": {
"qty": 72,
"units": "degF"
},
"humidity": {
"qty": 65,
"units": "%"
}
}
temperature(Object): Környezeti hőmérséklet az edzés alatthumidity(Object): Relatív páratartalom százalékban
Hőmérséklet-egységek: "degF" (Fahrenheit) vagy "degC" (Celsius)
Úszásspecifikus mezők
{
"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): Minden kör hosszastrokeStyle(String): Az alábbiak egyike:"Backstroke""Breaststroke""Butterfly""Freestyle""Mixed""Kickboard""Unknown"
swolfScore(Number): Úszás-hatékonysági pontszámsalinity(String):"Fresh Water"vagy"Salt Water"totalSwimmingStrokeCount(Object): Összes húzásszámswimCadence(Object): Húzások percenként
Lépés- és kadenciaadatok
{
"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): Lépésszám-mérések időbenstepCadence(Object): Lépések percenkéntflightsClimbed(Object): Megmászott lépcsőszintek száma
Pulzusadatok
{
"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): Összefoglaló min-, avg- és max-pulzussal az edzés alattmaxHeartRate(Object): Maximális pulzus az edzés alattavgHeartRate(Object): Átlagos pulzus az edzés alattheartRateData(Array): Részletes mérések az edzésből; az edzés végén érnek végetheartRateRecovery(Array): Külön mérések az edzés végét követő két percből
Az összefoglaló pulzusok a rögzített edzésértékeket használják, ha elérhetők; egyébként az edzés pulzusleolvasásaira támaszkodnak. Az exportált leolvasások tartalmazzák a szünetek alatti méréseket, ezért a csúcsok és átlagok eltérhetnek az összefoglalótól.
Idősoros adattömbök
Sok metrika idősoros tömbként felvehető, ha az „Edzésmetrikák felvétele” engedélyezve van:
{
"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 szerkezet:
date(Date): A mérés időbélyegeqty(Number): Mennyiségértékunits(String): Mértékegységsource(String, opcionális): Adatforrás, eszköz vagy alkalmazás
HeartRateData szerkezet:
date(Date): A mérés időbélyegeMin(Number): Minimális pulzusAvg(Number): Átlagos pulzusMax(Number): Maximális pulzusunits(String): Egység (count/min, ha a Mértékegységek lokalizálása ki van kapcsolva)source(String, opcionális): Adatforrás, eszköz vagy alkalmazás
Útvonaladatok
Ha az „Útvonaladatok felvétele” engedélyezve van, és az edzésnek van GPS-adata:
{
"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
}
]
}
Helyszínmezők:
latitude(Number): GPS szélességlongitude(Number): GPS hosszúságaltitude(Number): Magasság méterbencourse(Number): Haladási irány fokokban (0–360)courseAccuracy(Number): Irány mérés pontossága fokokbanhorizontalAccuracy(Number): Vízszintes helyzetpontosság méterbenverticalAccuracy(Number): Függőleges helyzetpontosság méterbentimestamp(Date): Amikor a helyszín rögzültspeed(Number): Sebesség méter/másodpercbenspeedAccuracy(Number): Sebességmérés pontossága m/s-ban
Metaadatok
{
"metadata": {
"customField": {
"label": "value",
"quantity": 123
},
"anotherField": [
1,
2,
3
]
}
}
metadata(Object): Az edzéshez kapcsolódó további egyéni metaadatok
Események, tevékenységek és szakaszok
A 2. verziójú JSON- és Markdown-exportok tartalmazhatnak az edzésalkalmazás által rögzített events, segments, laps és activities adatokat. Ezek akkor is elérhetők, ha az Edzésmetrikák felvétele ki van kapcsolva. A CSV és a GPX nem tartalmazza ezeket a rekordokat.
Ha az Edzésmetrikák felvétele be van kapcsolva, és a releváns metrikák ki vannak választva, az intervallumok távolságot, aktív energiát, pulzusösszefoglalókat, valamint aktív idejű tempót vagy sebességet is tartalmazhatnak. Az értékek megkülönböztetik a rögzített méréseket a becslésektől; a hiányzó értékek kimaradnak.
Ha a távolság ki van választva, a splits becsült kilométer- és mérföldszakaszokat tartalmazhat. Ezek eltérhetnek a rögzítő alkalmazás szakaszaitól, és az utolsó szakasz részlegesként jelölődik, ha rövidebb a céltávolságnál. Hiányzó távolságleolvasások vagy nem támogatott edzéstípusok megakadályozhatják a szakaszok kiszámítását.
Edzés erőfeszítés-pontszámok
A 2. verziójú JSON- és Markdown-exportok tartalmazhatnak kiválasztott Edzés erőfeszítés-pontszám (effortScore) és Becsült edzés erőfeszítés-pontszám (estimatedEffortScore) értékeket. Mindegyik objektum qty és units: "appleEffortScore" mezőkkel.
A pontszámokhoz iOS 18 vagy újabb, valamint a megfelelő adatokhoz való hozzáférés szükséges az Apple Healthben. A teljes edzés és a tevékenység pontszámai külön állnak. Függetlenek az Időcsoportosítástól és az Edzésmetrikák felvétele beállítástól; a CSV nem tartalmazza őket.
A Böngészés → Edzések menüpontban nyissa meg a lista exportlapját vagy egy edzés 2. verziójú exportbeállításait, majd használja az Exportmezők kiválasztása lehetőséget az erőfeszítés-pontszámok kiválasztásához az export előtt.
Edzésmetrikák időcsoportosítása
Ha a 2. exportverziót használja, és az „Edzésmetrikák felvétele” engedélyezve van, szabályozhatja az idősoros adatok részletességét:
- Percek: Az edzésmetrikákat óraminutákra csoportosítja. Az első és utolsó perc tartalmazhat néhány másodpercet közvetlenül az edzés kezdete előtt vagy után.
- Másodpercek: Az edzésmetrikákat óramásodpercekre csoportosítja; minden időbélyeg a másodperc kezdetét jelöli. Az első és utolsó másodperc tartalmazhatja az edzésen kívüli másodperc törtrészét. A fájlok nagyobbak, mint perces csoportosításnál.
Az aktív és pihenő kalóriák ugyanazokat a kombinált összegeket használják, mint más edzésmetrikák minden időcsoportban. Több eszköz vagy alkalmazás leolvasásai együtt szerepelnek.
Edzések 1. verzió (Legacy)
Az 1. verzió egyszerűbb szerkezetet használ. Új exportokhoz a 2. verzió ajánlott.
1. verzió szerkezete
{
"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"
}
]
}