Harjoitukset - JSON-vientimuoto
Dokumentaatio harjoitusten rakenteesta JSON-vienneissä
Päivitetty viimeksi: 31. lokakuuta 2026
Tällä sivulla
JSON-viennit tallentavat harjoitukset taulukkoon workouts.
Vientiversiot
Health Auto Export tukee kahta harjoitusviennin versiota:
- Versio 2 (Suositeltu): Laajennettu muoto, jossa on yksityiskohtaisempaa metatietoa ja rakenteellista dataa
- Versio 1 (Legacy): Vanhempi muoto, jota ylläpidetään yhteensopivuuden vuoksi olemassa olevien työnkulkujen kanssa
Harjoitukset versio 2
Versio 2 sisältää seuraavat pakolliset kentät ja valinnaiset tiedot. Esimerkit käyttävät Lokaloi yksiköt pois päältä; sen käyttöönotto voi muuttaa yksiköiden nimiä metrisarjoissa.
Perusrakenne
{
"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
}
Pakolliset kentät
id(String): Harjoituksen yksilöllinen tunnistename(String): Harjoitustyypin nimi (esim. "Running", "Cycling", "Swimming")start(Date): Harjoituksen alkuaika muodossayyyy-MM-dd HH:mm:ss Zend(Date): Harjoituksen päättymisaika muodossayyyy-MM-dd HH:mm:ss Zduration(Number): Harjoituksen kesto sekunteina
Valinnaiset kentät
Valinnaiset kentät riippuvat saatavilla olevista tiedoista ja vientivalinnoistasi:
Tallennuslähde
{
"source": {
"name": "Workout App",
"identifier": "com.example.workouts"
}
}
source(Object): Harjoituksen tallentanut sovellus tai laite, sen nimellä ja sovellustunnisteella. Yksittäisillä mittarilukemilla on erilliset lähdemerkkijonot, ja ne voivat tulla toisesta sovelluksesta tai laitteesta.
Sijaintitiedot
{
"location": "Outdoor",
"isIndoor": false
}
location(String): Yksi seuraavista:"Indoor","Outdoor","Pool","Open Water"isIndoor(Boolean): Suoritettiinko harjoitus sisätiloissa
Energia ja intensiteetti
{
"activeEnergyBurned": {
"qty": 350,
"units": "kcal"
},
"totalEnergy": {
"qty": 450,
"units": "kcal"
},
"intensity": {
"qty": 8.5,
"units": "kcal/hr\u00b7kg"
}
}
activeEnergyBurned(Object): Harjoituksen aikana poltetut aktiivikalorittotalEnergy(Object): Poltetut kokonaiskaloriat (aktiiviset + lepo)intensity(Object): Metabolinen ekvivalentti (MET) -arvo
Matka ja nopeus
{
"distance": {
"qty": 3.5,
"units": "mi"
}
}
distance(Object): Kokonaismatkaspeed(Object): Keskimääräinen nopeus laskettuna matkasta ja kestostaavgSpeed(Object): Keskimääräinen nopeus koko harjoituksen ajanmaxSpeed(Object): Saavutettu enimmäisnopeus
Kukin objekti sisältää qty- ja units-kentät.
Korkeus
{
"elevationUp": {
"qty": 500,
"units": "ft"
},
"elevationDown": {
"qty": 450,
"units": "ft"
}
}
elevationUp(Object): KokonaisnousuelevationDown(Object): Kokonaislasku
Yksiköt: "ft" (jalkaa) tai "m" (metriä)
Ympäristötiedot
{
"temperature": {
"qty": 72,
"units": "degF"
},
"humidity": {
"qty": 65,
"units": "%"
}
}
temperature(Object): Ympäristön lämpötila harjoituksen aikanahumidity(Object): Suhteellinen kosteus prosentteina
Lämpötilayksiköt: "degF" (Fahrenheit) tai "degC" (Celsius)
Uintikohtaiset kentät
{
"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): Kunkin kierroksen pituusstrokeStyle(String): Yksi seuraavista:"Backstroke""Breaststroke""Butterfly""Freestyle""Mixed""Kickboard""Unknown"
swolfScore(Number): Uinnin tehokkuuspisteetsalinity(String):"Fresh Water"tai"Salt Water"totalSwimmingStrokeCount(Object): Vetojen kokonaismääräswimCadence(Object): Vetoja minuutissa
Askel- ja kadenssitiedot
{
"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): Askelmäärämittauksia ajan mittaanstepCadence(Object): Askelia minuutissaflightsClimbed(Object): Noustujen porraskerrostumien määrä
Syketiedot
{
"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): Yhteenveto min-, avg- ja max-sykkeestä harjoituksen aikanamaxHeartRate(Object): Enimmäissyke harjoituksen aikanaavgHeartRate(Object): Keskimääräinen syke harjoituksen aikanaheartRateData(Array): Yksityiskohtaiset mittaukset harjoituksesta; päättyvät harjoituksen päättyessäheartRateRecovery(Array): Erilliset mittaukset kahdelta minuutilta heti harjoituksen päättymisen jälkeen
Yhteenvetosykkeet käyttävät tallennettuja harjoitusarvoja, kun niitä on saatavilla; muuten ne tukeutuvat harjoituksen sykelukemiin. Viedyt lukemat sisältävät mittauksia taukojen ajalta, joten huiput ja keskiarvot voivat poiketa yhteenvedosta.
Aikasarjataulukot
Monia mittareita voidaan sisällyttää aikasarjataulukoina, kun "Sisällytä harjoitusmittarit" on käytössä:
{
"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-rakenne:
date(Date): Mittauksen aikaleimaqty(Number): Määräarvounits(String): Mittayksikkösource(String, valinnainen): Tietolähde, laite tai sovellus
HeartRateData-rakenne:
date(Date): Mittauksen aikaleimaMin(Number): VähimmäissykeAvg(Number): Keskimääräinen sykeMax(Number): Enimmäissykeunits(String): Yksikkö (count/min, kun Lokaloi yksiköt on pois päältä)source(String, valinnainen): Tietolähde, laite tai sovellus
Reittitiedot
Kun "Sisällytä reittitiedot" on käytössä ja harjoituksella on GPS-tietoja:
{
"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
}
]
}
Sijaintikentät:
latitude(Number): GPS-leveysastelongitude(Number): GPS-pituusastealtitude(Number): Korkeus metreinäcourse(Number): Kulkusuunta asteina (0–360)courseAccuracy(Number): Suuntamittauksen tarkkuus asteinahorizontalAccuracy(Number): Vaakasuuntainen sijaintitarkkuus metreinäverticalAccuracy(Number): Pystysuuntainen sijaintitarkkuus metreinätimestamp(Date): Aika, jolloin sijainti tallennettiinspeed(Number): Nopeus metreinä sekunnissaspeedAccuracy(Number): Nopeusmittauksen tarkkuus m/s
Metatiedot
{
"metadata": {
"customField": {
"label": "value",
"quantity": 123
},
"anotherField": [
1,
2,
3
]
}
}
metadata(Object): Harjoitukseen liittyvät lisämetatiedot
Tapahtumat, aktiviteetit ja osuudet
Version 2 JSON- ja Markdown-viennit voivat sisältää harjoitussovelluksen tallentamia events-, segments-, laps- ja activities-tietoja. Ne ovat käytettävissä myös, kun Sisällytä harjoitusmittarit on pois päältä. CSV ja GPX eivät sisällä näitä tietueita.
Kun Sisällytä harjoitusmittarit on päällä ja asiaankuuluvat mittarit on valittu, intervallit voivat sisältää myös matkan, aktiivisen energian, sykeyhteenvedot sekä aktiivisen ajan tahdin tai nopeuden. Arvot erottavat tallennetut mittaukset arvioista; puuttuvat arvot jätetään pois.
Kun matka on valittu, splits voi sisältää arvioituja kilometri- ja mailiosuuksia. Ne voivat poiketa tallentavan sovelluksen osuuksista, ja viimeinen osuus merkitään osittaiseksi, kun se on lyhyempi kuin tavoitematka. Puuttuvat matkalukemat tai tuettomat harjoitustyypit voivat estää osuuksien laskennan.
Harjoituksen rasituspisteet
Version 2 JSON- ja Markdown-viennit voivat sisältää valittuja Harjoituksen rasituspiste (effortScore) ja Arvioitu harjoituksen rasituspiste (estimatedEffortScore) -arvoja. Kumpikin on objekti, jossa on qty ja units: "appleEffortScore".
Pisteet edellyttävät iOS 18:aa tai uudempaa sekä pääsyä vastaaviin tietoihin Apple Healthissa. Koko harjoituksen ja aktiviteetin pisteet ovat erillisiä. Ne ovat riippumattomia Aikaryhmittelystä ja Sisällytä harjoitusmittarit -asetuksesta; CSV ei sisällä niitä.
Kohdassa Selaa → Harjoitukset avaa luettelon vientilehti tai harjoituksen Version 2 -vientiasetukset ja käytä sitten Valitse vientikentät valitaksesi rasituspisteet ennen vientiä.
Harjoitusmittarien aikaryhmittely
Kun käytössä on Vientiversio 2 ja "Sisällytä harjoitusmittarit" on käytössä, voit hallita aikasarjatietojen tarkkuutta:
- Minuutit: Ryhmittelee harjoitusmittarit kellon minuuteille. Ensimmäinen ja viimeinen minuutti voivat sisältää muutaman sekunnin juuri ennen harjoituksen alkua tai sen jälkeen.
- Sekunnit: Ryhmittelee harjoitusmittarit kellon sekunneille; kukin aikaleima merkitsee sekunnin alkua. Ensimmäinen ja viimeinen sekunti voivat sisältää murto-osan sekunnista juuri harjoituksen ulkopuolella. Tiedostot ovat suurempia kuin minuuttiryhmittelyssä.
Aktiivinen ja lepokalorit käyttävät samoja yhdistettyjä summia kuin muut harjoitusmittarit kussakin aikaryhmässä. Useamman laitteen tai sovelluksen lukemat sisällytetään yhdessä.
Harjoitukset versio 1 (Legacy)
Versio 1 käyttää yksinkertaisempaa rakennetta. Uusiin vienteihin suositellaan Versiota 2.
Version 1 rakenne
{
"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"
}
]
}