Pusat bantuan HealthyApps
Bahasa Indonesia
Pusat bantuan
Situs utama ↗

Cari topik bantuan

Latihan - Format ekspor JSON

Dokumentasi untuk struktur latihan dalam ekspor JSON

Terakhir diperbarui: 31 Oktober 2026

Di halaman ini
Versi Ekspor
Latihan Versi 2 Latihan Versi 2 Struktur dasarBidang wajibBidang opsionalPengelompokan Waktu Metrik Latihan
Latihan Versi 1 (Lama) Latihan Versi 1 (Lama) Struktur Versi 1
Dokumentasi terkait

Ekspor JSON menyimpan latihan di array workouts.

Versi Ekspor

Health Auto Export mendukung dua versi ekspor latihan:

  • Versi 2 (Direkomendasikan): Format yang ditingkatkan dengan metadata dan data terstruktur yang lebih terperinci
  • Versi 1 (Lama): Format lama yang dipertahankan untuk kompatibilitas dengan alur kerja yang ada

Latihan Versi 2

Versi 2 mencakup bidang wajib berikut dan data opsional. Contoh dengan Lokalkan Satuan nonaktif; mengaktifkannya dapat mengubah label satuan dalam seri metrik.

Struktur dasar

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

Bidang wajib

  • id (String): Pengenal unik untuk latihan
  • name (String): Nama jenis latihan (mis. "Running", "Cycling", "Swimming")
  • start (Date): Waktu mulai latihan dalam format yyyy-MM-dd HH:mm:ss Z
  • end (Date): Waktu akhir latihan dalam format yyyy-MM-dd HH:mm:ss Z
  • duration (Number): Durasi latihan dalam detik

Bidang opsional

Bidang opsional bergantung pada data yang tersedia dan pilihan ekspor Anda:

Sumber perekaman

{
  "source": {
    "name": "Workout App",
    "identifier": "com.example.workouts"
  }
}
  • source (Object): Aplikasi atau perangkat yang merekam latihan; dengan nama dan pengenal aplikasi. Pembacaan metrik individual memiliki string sumber terpisah dan dapat berasal dari aplikasi atau perangkat lain.

Informasi lokasi

{
  "location": "Outdoor",
  "isIndoor": false
}
  • location (String): Salah satu dari "Indoor", "Outdoor", "Pool", "Open Water"
  • isIndoor (Boolean): Apakah latihan dilakukan di dalam ruangan

Energi dan intensitas

{
  "activeEnergyBurned": {
    "qty": 350,
    "units": "kcal"
  },
  "totalEnergy": {
    "qty": 450,
    "units": "kcal"
  },
  "intensity": {
    "qty": 8.5,
    "units": "kcal/hr\u00b7kg"
  }
}
  • activeEnergyBurned (Object): Kalori aktif yang dibakar selama latihan
  • totalEnergy (Object): Total kalori yang dibakar (aktif + istirahat)
  • intensity (Object): Nilai metabolic equivalent of task (MET)

Jarak dan kecepatan

{
  "distance": {
    "qty": 3.5,
    "units": "mi"
  }
}
  • distance (Object): Total jarak yang ditempuh
  • speed (Object): Kecepatan rata-rata yang dihitung dari jarak dan durasi
  • avgSpeed (Object): Kecepatan rata-rata sepanjang latihan
  • maxSpeed (Object): Kecepatan maksimum yang dicapai

Setiap objek berisi qty dan units.

Elevasi

{
  "elevationUp": {
    "qty": 500,
    "units": "ft"
  },
  "elevationDown": {
    "qty": 450,
    "units": "ft"
  }
}
  • elevationUp (Object): Total elevasi yang diperoleh
  • elevationDown (Object): Total elevasi yang hilang

Satuan: "ft" (kaki) atau "m" (meter)

Data lingkungan

{
  "temperature": {
    "qty": 72,
    "units": "degF"
  },
  "humidity": {
    "qty": 65,
    "units": "%"
  }
}
  • temperature (Object): Suhu lingkungan selama latihan
  • humidity (Object): Persentase kelembapan relatif

Satuan suhu: "degF" (Fahrenheit) atau "degC" (Celsius)

Bidang khusus renang

{
  "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): Panjang setiap putaran
  • strokeStyle (String): Salah satu dari:
    • "Backstroke"
    • "Breaststroke"
    • "Butterfly"
    • "Freestyle"
    • "Mixed"
    • "Kickboard"
    • "Unknown"
  • swolfScore (Number): Skor efisiensi renang
  • salinity (String): "Fresh Water" atau "Salt Water"
  • totalSwimmingStrokeCount (Object): Total jumlah kayuhan
  • swimCadence (Object): Kayuhan per menit

Data langkah dan kadens

{
  "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): Array pengukuran jumlah langkah dari waktu ke waktu
  • stepCadence (Object): Langkah per menit
  • flightsClimbed (Object): Jumlah lantai tangga yang dinaiki

Data denyut jantung

{
  "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): Ringkasan denyut jantung min, rata-rata, dan maks selama latihan
  • maxHeartRate (Object): Denyut jantung maksimum selama latihan
  • avgHeartRate (Object): Denyut jantung rata-rata selama latihan
  • heartRateData (Array): Pengukuran terperinci dari latihan; berakhir saat latihan berakhir
  • heartRateRecovery (Array): Pengukuran terpisah dari dua menit segera setelah latihan berakhir

Ringkasan denyut jantung menggunakan nilai latihan yang direkam jika tersedia; jika tidak, kembali ke pembacaan denyut jantung latihan. Pembacaan yang diekspor mencakup pengukuran yang diambil selama jeda; sehingga puncak dan rata-ratanya dapat berbeda dari ringkasan.

Array data deret waktu

Saat "Sertakan Metrik Latihan" diaktifkan, banyak metrik dapat disertakan sebagai array deret waktu:

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

Struktur QuantityData:

  • date (Date): Stempel waktu pengukuran
  • qty (Number): Nilai kuantitas
  • units (String): Satuan pengukuran
  • source (String, opsional): Perangkat atau aplikasi sumber data

Struktur HeartRateData:

  • date (Date): Stempel waktu pengukuran
  • Min (Number): Denyut jantung minimum
  • Avg (Number): Denyut jantung rata-rata
  • Max (Number): Denyut jantung maksimum
  • units (String): Satuan (count/min saat Lokalkan Satuan nonaktif)
  • source (String, opsional): Perangkat atau aplikasi sumber data

Data rute

Saat "Sertakan Data Rute" diaktifkan dan latihan memiliki data 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
    }
  ]
}

Bidang lokasi:

  • latitude (Number): Koordinat lintang GPS
  • longitude (Number): Koordinat bujur GPS
  • altitude (Number): Ketinggian dalam meter
  • course (Number): Arah gerakan dalam derajat (0-360)
  • courseAccuracy (Number): Akurasi pengukuran arah dalam derajat
  • horizontalAccuracy (Number): Akurasi posisi horizontal dalam meter
  • verticalAccuracy (Number): Akurasi posisi vertikal dalam meter
  • timestamp (Date): Saat lokasi direkam
  • speed (Number): Kecepatan dalam meter/detik
  • speedAccuracy (Number): Akurasi pengukuran kecepatan dalam m/s

Metadata

{
  "metadata": {
    "customField": {
      "label": "value",
      "quantity": 123
    },
    "anotherField": [
      1,
      2,
      3
    ]
  }
}
  • metadata (Object): Metadata kustom tambahan yang terkait dengan latihan

Peristiwa, aktivitas, dan split

Ekspor JSON dan Markdown Versi 2 dapat mencakup events, segments, laps, dan activities yang direkam aplikasi latihan. Ini tersedia bahkan saat Sertakan Metrik Latihan nonaktif. CSV dan GPX tidak mencakup catatan ini.

Saat Sertakan Metrik Latihan aktif dan metrik terkait dipilih, interval juga dapat mencakup jarak, energi aktif, ringkasan denyut jantung, dan tempo atau kecepatan durasi aktif. Nilai membedakan pengukuran yang direkam dari perkiraan; nilai yang tidak tersedia dihilangkan.

Saat jarak dipilih, splits dapat mencakup perkiraan split kilometer dan mil. Mereka dapat berbeda dari split aplikasi perekaman dan split terakhir ditandai sebagian jika lebih pendek dari jarak target. Pembacaan jarak yang hilang atau jenis latihan yang tidak didukung dapat mencegah perhitungan split.

Skor upaya latihan

Ekspor JSON dan Markdown Versi 2 dapat mencakup nilai Skor Upaya Latihan (effortScore) dan Skor Upaya Latihan Perkiraan (estimatedEffortScore) yang dipilih. Masing-masing adalah objek yang berisi qty dan units: "appleEffortScore".

Skor memerlukan iOS 18 atau lebih baru dan akses ke data terkait di Apple Health. Skor seluruh-latihan dan aktivitas terpisah. Independen dari Pengelompokan Waktu dan Sertakan Metrik Latihan; CSV tidak mencakupnya.

Di Jelajahi → Latihan, buka halaman ekspor daftar atau pengaturan ekspor Versi 2 latihan, lalu gunakan Pilih Bidang Ekspor untuk memilih skor upaya sebelum mengekspor.

Pengelompokan Waktu Metrik Latihan

Saat menggunakan Versi Ekspor 2 dan "Sertakan Metrik Latihan" diaktifkan, Anda dapat mengontrol tingkat detail data deret waktu:

  • Menit: Mengelompokkan metrik latihan menurut menit jam. Menit pertama dan terakhir dapat mencakup beberapa detik segera sebelum latihan dimulai atau setelah berakhir.
  • Detik: Mengelompokkan metrik latihan menurut detik jam; setiap stempel waktu menandai awal detiknya. Detik pertama dan terakhir dapat mencakup pecahan detik tepat di luar latihan. File lebih besar daripada pengelompokan menit.

Energi aktif dan istirahat menggunakan total gabungan yang sama dengan metrik latihan lain dalam setiap kelompok waktu. Pembacaan dari beberapa perangkat atau aplikasi disertakan bersama.

Latihan Versi 1 (Lama)

Versi 1 menggunakan struktur yang lebih sederhana. Versi 2 direkomendasikan untuk ekspor baru.

Struktur Versi 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"
    }
  ]
}

Dokumentasi terkait