Centru de ajutor HealthyApps
Română
Centru de ajutor
Site principal ↗

Caută subiecte de ajutor

Antrenamente - Format export JSON

Documentație pentru structura antrenamentelor în exporturile JSON

Ultima actualizare: 31 octombrie 2026

Pe această pagină
Versiuni de export
Antrenamente Versiunea 2 Antrenamente Versiunea 2 Structură de bazăCâmpuri obligatoriiCâmpuri opționaleGruparea temporală a metricilor de antrenament
Antrenamente Versiunea 1 (Legacy) Antrenamente Versiunea 1 (Legacy) Structura Versiunii 1
Documentație conexă

Exporturile JSON stochează antrenamentele în matricea workouts.

Versiuni de export

Health Auto Export acceptă două versiuni de export pentru antrenamente:

  • Versiunea 2 (Recomandată): Format îmbunătățit cu metadate și date structurate mai detaliate
  • Versiunea 1 (Legacy): Format mai vechi păstrat pentru compatibilitate cu fluxurile de lucru existente

Antrenamente Versiunea 2

Versiunea 2 include următoarele câmpuri obligatorii și date opționale. Exemplele folosesc Localizează unitățile dezactivat; activarea poate schimba etichetele unităților în seriile de metrici.

Structură de bază

{
  "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
}

Câmpuri obligatorii

  • id (String): Identificator unic pentru antrenament
  • name (String): Numele tipului de antrenament (de ex. "Running", "Cycling", "Swimming")
  • start (Date): Ora de început a antrenamentului în format yyyy-MM-dd HH:mm:ss Z
  • end (Date): Ora de sfârșit a antrenamentului în format yyyy-MM-dd HH:mm:ss Z
  • duration (Number): Durata antrenamentului în secunde

Câmpuri opționale

Câmpurile opționale depind de datele disponibile și de selecțiile de export:

Sursa înregistrării

{
  "source": {
    "name": "Workout App",
    "identifier": "com.example.workouts"
  }
}
  • source (Object): Aplicația sau dispozitivul care a înregistrat antrenamentul, cu numele și identificatorul aplicației. Citirile individuale de metrici au șiruri de sursă separate și pot proveni din altă aplicație sau dispozitiv.

Informații despre locație

{
  "location": "Outdoor",
  "isIndoor": false
}
  • location (String): Una dintre "Indoor", "Outdoor", "Pool", "Open Water"
  • isIndoor (Boolean): Dacă antrenamentul a fost efectuat în interior

Energie și intensitate

{
  "activeEnergyBurned": {
    "qty": 350,
    "units": "kcal"
  },
  "totalEnergy": {
    "qty": 450,
    "units": "kcal"
  },
  "intensity": {
    "qty": 8.5,
    "units": "kcal/hr\u00b7kg"
  }
}
  • activeEnergyBurned (Object): Caloriile active arse în timpul antrenamentului
  • totalEnergy (Object): Caloriile totale (active + de repaus) arse
  • intensity (Object): Valoarea metabolic equivalent of task (MET)

Distanță și viteză

{
  "distance": {
    "qty": 3.5,
    "units": "mi"
  }
}
  • distance (Object): Distanța totală parcursă
  • speed (Object): Viteza medie calculată din distanță și durată
  • avgSpeed (Object): Viteza medie pe parcursul antrenamentului
  • maxSpeed (Object): Viteza maximă atinsă

Fiecare obiect include qty și units.

Elevație

{
  "elevationUp": {
    "qty": 500,
    "units": "ft"
  },
  "elevationDown": {
    "qty": 450,
    "units": "ft"
  }
}
  • elevationUp (Object): Elevația totală câștigată
  • elevationDown (Object): Elevația totală pierdută

Unități: "ft" (picioare) sau "m" (metri)

Date de mediu

{
  "temperature": {
    "qty": 72,
    "units": "degF"
  },
  "humidity": {
    "qty": 65,
    "units": "%"
  }
}
  • temperature (Object): Temperatura ambientală în timpul antrenamentului
  • humidity (Object): Procentul de umiditate relativă

Unități temperatură: "degF" (Fahrenheit) sau "degC" (Celsius)

Câmpuri specifice înotului

{
  "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): Lungimea fiecărui tur
  • strokeStyle (String): Una dintre:
    • "Backstroke"
    • "Breaststroke"
    • "Butterfly"
    • "Freestyle"
    • "Mixed"
    • "Kickboard"
    • "Unknown"
  • swolfScore (Number): Scorul de eficiență la înot
  • salinity (String): "Fresh Water" sau "Salt Water"
  • totalSwimmingStrokeCount (Object): Numărul total de brațe
  • swimCadence (Object): Brațe pe minut

Date despre pași și cadență

{
  "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): Matrice de măsurători ale numărului de pași în timp
  • stepCadence (Object): Pași pe minut
  • flightsClimbed (Object): Numărul de etaje de scări urcate

Date frecvență cardiacă

{
  "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): Rezumat cu frecvența cardiacă min, medie și max în timpul antrenamentului
  • maxHeartRate (Object): Frecvența cardiacă maximă în timpul antrenamentului
  • avgHeartRate (Object): Frecvența cardiacă medie în timpul antrenamentului
  • heartRateData (Array): Măsurători detaliate din antrenament, care se termină când se termină antrenamentul
  • heartRateRecovery (Array): Măsurători separate din cele două minute imediat după terminarea antrenamentului

Frecvențele cardiace de rezumat folosesc valorile înregistrate ale antrenamentului când sunt disponibile, cu revenire la citirile de frecvență cardiacă ale antrenamentului. Citirile exportate includ măsurătorile luate în timpul pauzelor, deci vârfurile și mediile pot diferi de rezumat.

Matrici de date pe serie temporală

Multe metrici pot fi incluse ca matrici pe serie temporală când este activat Include metricile antrenamentului:

{
  "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"
    }
  ]
}

Structura QuantityData:

  • date (Date): Timestamp-ul măsurării
  • qty (Number): Valoarea cantității
  • units (String): Unitatea de măsură
  • source (String, opțional): Dispozitivul sau aplicația sursă de date

Structura HeartRateData:

  • date (Date): Timestamp-ul măsurării
  • Min (Number): Frecvența cardiacă minimă
  • Avg (Number): Frecvența cardiacă medie
  • Max (Number): Frecvența cardiacă maximă
  • units (String): Unitatea (count/min cu Localizează unitățile dezactivat)
  • source (String, opțional): Dispozitivul sau aplicația sursă de date

Date rută

Când Include datele rutei este activat și antrenamentul are date 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
    }
  ]
}

Câmpuri locație:

  • latitude (Number): Coordonata latitudine GPS
  • longitude (Number): Coordonata longitudine GPS
  • altitude (Number): Elevația în metri
  • course (Number): Direcția de deplasare în grade (0-360)
  • courseAccuracy (Number): Precizia măsurării direcției în grade
  • horizontalAccuracy (Number): Precizia poziției orizontale în metri
  • verticalAccuracy (Number): Precizia poziției verticale în metri
  • timestamp (Date): Momentul înregistrării locației
  • speed (Number): Viteza în metri pe secundă
  • speedAccuracy (Number): Precizia măsurării vitezei în m/s

Metadate

{
  "metadata": {
    "customField": {
      "label": "value",
      "quantity": 123
    },
    "anotherField": [
      1,
      2,
      3
    ]
  }
}
  • metadata (Object): Metadate personalizate suplimentare asociate antrenamentului

Evenimente, activități și splituri

Exporturile JSON și Markdown Versiunea 2 pot include events, segments, laps și activities înregistrate de aplicația de antrenament. Acestea rămân disponibile când Include metricile antrenamentului este dezactivat. CSV și GPX nu includ aceste înregistrări.

Cu Include metricile antrenamentului activat și metricile relevante selectate, intervalele pot include și distanță, energie activă, rezumate de frecvență cardiacă și ritm sau viteză pe timpul activ. Valorile disting măsurătorile înregistrate de estimări; valorile indisponibile sunt omise.

Cu distanța selectată, splits pot include splituri estimate pe kilometru și milă. Pot diferi de spliturile aplicației de înregistrare, iar splitul final este marcat ca parțial când este mai scurt decât distanța țintă. Citirile de distanță lipsă sau tipurile de antrenament nesuportate pot împiedica calculul spliturilor.

Scoruri de efort ale antrenamentului

Exporturile JSON și Markdown Versiunea 2 pot include valorile selectate Scor al efortului antrenamentului (effortScore) și Scor estimat al efortului antrenamentului (estimatedEffortScore). Fiecare este un obiect cu qty și units: "appleEffortScore".

Scorurile necesită iOS 18 sau ulterior și acces la datele corespunzătoare din Apple Health. Scorurile pentru întregul antrenament și pentru activități sunt separate. Sunt independente de Grupare temporală și Include metricile antrenamentului; CSV nu le include.

În Navighează → Antrenamente, deschideți foaia de export a listei sau setările de export Versiunea 2 ale unui antrenament, apoi folosiți Selectați câmpurile de export pentru a alege scorurile de efort înainte de export.

Gruparea temporală a metricilor de antrenament

Când folosiți Versiunea de export 2 și Include metricile antrenamentului este activat, puteți controla granularitatea datelor pe serie temporală:

  • Minute: Grupează metricile de antrenament pe minutele ceasului. Primul și ultimul minut pot include câteva secunde imediat înainte de începerea antrenamentului sau imediat după terminare.
  • Secunde: Grupează metricile de antrenament pe secundele ceasului, fiecare timestamp marcând începutul secundei sale. Prima și ultima secundă pot include fracțiunea de secundă imediat în afara antrenamentului. Fișierele sunt mai mari decât la gruparea pe minute.

Energia activă și de repaus folosesc aceleași totaluri combinate ca celelalte metrici de antrenament din fiecare grup temporal. Citirile de pe mai multe dispozitive sau aplicații sunt incluse împreună.

Antrenamente Versiunea 1 (Legacy)

Versiunea 1 folosește o structură mai simplă. Pentru exporturi noi, Versiunea 2 este recomandată.

Structura Versiunii 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": "bpm"
    }
  ],
  "route": [
    {
      "lat": 37.7749,
      "lon": -122.4194,
      "altitude": 50.5,
      "timestamp": "2024-02-06 07:00:00 -0800"
    }
  ]
}

Documentație conexă