Buổi tập - Định dạng xuất JSON
Tài liệu về cấu trúc buổi tập trong các lần xuất JSON
Last updated: March 31, 2026
Trên trang này
Buổi tập
Dữ liệu buổi tập gồm các phiên tập được ghi trong Apple Health — chạy bộ, đạp xe, bơi, tập sức mạnh và nhiều loại khác. Trong bản xuất JSON, chúng nằm trong mảng workouts.
Phiên bản xuất
Health Auto Export hỗ trợ hai phiên bản xuất buổi tập:
- Phiên bản 2 (Khuyến nghị): Định dạng nâng cao với siêu dữ liệu chi tiết hơn và dữ liệu có cấu trúc
- Phiên bản 1 (Cũ): Định dạng đơn giản hơn, giữ để tương thích quy trình hiện có
Buổi tập phiên bản 2
Phiên bản 2 cung cấp cấu trúc đầy đủ với các trường tùy chọn chỉ xuất hiện khi có dữ liệu.
Cấu trúc cơ bản
{
"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
}
Trường bắt buộc
id(Chuỗi): Định danh duy nhất cho buổi tậpname(Chuỗi): Tên loại buổi tập (ví dụ: "Running", "Cycling", "Swimming")start(Ngày/giờ): Thời điểm bắt đầu, định dạngyyyy-MM-dd HH:mm:ss Zend(Ngày/giờ): Thời điểm kết thúc, định dạngyyyy-MM-dd HH:mm:ss Zduration(Số): Độ dài buổi tập, đơn vị giây
Trường tùy chọn
Các trường sau chỉ có khi có dữ liệu:
Thông tin vị trí
{
"location": "Outdoor",
"isIndoor": false
}
location(Chuỗi): Một trong"Indoor","Outdoor","Pool","Open Water"isIndoor(Boolean): Buổi tập diễn ra trong nhà hay không
Năng lượng và cường độ
{
"activeEnergyBurned": {
"qty": 350,
"units": "kcal"
},
"totalEnergy": {
"qty": 450,
"units": "kcal"
},
"intensity": {
"qty": 8.5,
"units": "MET"
}
}
activeEnergyBurned(Đối tượng): Calo hoạt động tiêu hao trong buổi tậptotalEnergy(Đối tượng): Tổng calo tiêu hao (hoạt động + nghỉ)intensity(Đối tượng): Giá trị MET (tương đương trao đổi chất)
Quãng đường và tốc độ
{
"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(Đối tượng): Tổng quãng đườngspeed(Đối tượng): Tốc độ hiện tại hoặc trung bìnhavgSpeed(Đối tượng): Tốc độ trung bình suốt buổi tậpmaxSpeed(Đối tượng): Tốc độ tối đa đạt được
Đơn vị:
- Quãng đường:
"mi"(dặm) hoặc"km"(kilômét) - Tốc độ:
"mph"(dặm/giờ) hoặc"kmph"(kilômét/giờ)
Độ cao
{
"elevationUp": {
"qty": 500,
"units": "ft"
},
"elevationDown": {
"qty": 450,
"units": "ft"
}
}
elevationUp(Đối tượng): Tổng độ cao lênelevationDown(Đối tượng): Tổng độ cao xuống
Đơn vị: "ft" (foot) hoặc "m" (mét)
Dữ liệu môi trường
{
"temperature": {
"qty": 72,
"units": "degF"
},
"humidity": {
"qty": 65,
"units": "%"
}
}
temperature(Đối tượng): Nhiệt độ môi trường trong lúc tậphumidity(Đối tượng): Độ ẩm tương đối, phần trăm
Đơn vị nhiệt độ: "degF" (Fahrenheit) hoặc "degC" (Celsius)
Trường riêng cho bơi
{
"lapLength": {
"qty": 0.025,
"units": "mi"
},
"strokeStyle": "Freestyle",
"swolfScore": 45,
"salinity": "Fresh Water",
"totalSwimmingStrokeCount": {
"qty": 1200,
"units": "count"
},
"swimCadence": {
"qty": 30,
"units": "spm"
}
}
lapLength(Đối tượng): Độ dài mỗi lànstrokeStyle(Chuỗi): Một trong:"Backstroke""Breaststroke""Butterfly""Freestyle""Mixed""Kickboard""Unknown"
swolfScore(Số): Điểm hiệu quả bơi (SWOLF)salinity(Chuỗi):"Fresh Water"hoặc"Salt Water"totalSwimmingStrokeCount(Đối tượng): Tổng số nhịp quạt nướcswimCadence(Đối tượng): Nhịp quạt mỗi phút
Dữ liệu bước và nhịp
{
"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(Mảng): Mảng các lần đếm bước theo thời gianstepCadence(Đối tượng): Bước mỗi phútflightsClimbed(Đối tượng): Số tầng cầu thang đã leo
Dữ liệu nhịp tim
{
"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(Đối tượng): Tóm tắt nhịp tối thiểu, trung bình và tối đamaxHeartRate(Đối tượng): Nhịp tim tối đa trong buổi tậpavgHeartRate(Đối tượng): Nhịp tim trung bình trong buổi tậpheartRateData(Mảng): Các đo nhịp tim chi tiết suốt buổi tậpheartRateRecovery(Mảng): Các đo nhịp tim trong giai đoạn hồi phục
Mảng chuỗi thời gian
Nhiều chỉ số có thể được đưa vào dạng mảng chuỗi thời gian khi bạn bật tùy chọn bao gồm chỉ số buổi tập:
{
"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"
}
]
}
Cấu trúc QuantityData:
date(Ngày/giờ): Mốc thời gian của phép đoqty(Số): Giá trị số lượngunits(Chuỗi): Đơn vị đosource(Chuỗi, tùy chọn): Thiết bị hoặc ứng dụng nguồn dữ liệu
Cấu trúc HeartRateData:
date(Ngày/giờ): Mốc thời gian của phép đoMin(Số): Nhịp tim tối thiểuAvg(Số): Nhịp tim trung bìnhMax(Số): Nhịp tim tối đaunits(Chuỗi): Đơn vị (thường là "bpm")source(Chuỗi, tùy chọn): Thiết bị hoặc ứng dụng nguồn dữ liệu
Dữ liệu lộ trình
Khi bạn bật tùy chọn bao gồm dữ liệu lộ trình và buổi tập có dữ liệu 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
}
]
}
Trường vị trí:
latitude(Số): Tọa độ vĩ độ GPSlongitude(Số): Tọa độ kinh độ GPSaltitude(Số): Độ cao, métcourse(Số): Hướng di chuyển, độ (0–360)courseAccuracy(Số): Độ chính xác đo hướng, độhorizontalAccuracy(Số): Độ chính xác vị trí ngang, métverticalAccuracy(Số): Độ chính xác theo phương đứng, méttimestamp(Ngày/giờ): Thời điểm ghi vị tríspeed(Số): Tốc độ, mét mỗi giâyspeedAccuracy(Số): Độ chính xác đo tốc độ, m/s
Siêu dữ liệu
{
"metadata": {
"customField": "value",
"anotherField": 123
}
}
metadata(Đối tượng): Siêu dữ liệu tùy chỉnh bổ sung gắn với buổi tập
Buổi tập phiên bản 1 (cũ)
Phiên bản 1 dùng cấu trúc đơn giản hơn. Với bản xuất mới, nên dùng phiên bản 2.
Cấu trúc phiên bản 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": "count"
}
],
"route": [
{
"lat": 37.7749,
"lon": -122.4194,
"altitude": 50.5,
"timestamp": "2024-02-06 07:00:00 -0800"
}
]
}
Nhóm thời gian chỉ số buổi tập
Khi dùng phiên bản xuất 2 và bật tùy chọn bao gồm chỉ số buổi tập, bạn kiểm soát độ chi tiết của dữ liệu chuỗi thời gian:
- Phút: Gom chỉ số buổi tập theo khoảng phút
- Giây: Gom theo khoảng giây (chi tiết hơn, tệp lớn hơn)
Mẹo
- Bao gồm dữ liệu lộ trình: Bật tùy chọn này để có thông tin GPS cho buổi tập ngoài trời
- Bao gồm chỉ số buổi tập: Bật để có dữ liệu chuỗi thời gian chi tiết cho chỉ số như nhịp tim, công suất và nhịp
- Phiên bản xuất: Dùng phiên bản 2 để có cấu trúc dữ liệu đầy đủ nhất
- Xuất GPX: Dữ liệu lộ trình cũng có thể xuất riêng dạng GPX để dùng trong ứng dụng bản đồ
Tài liệu liên quan
- Tổng quan định dạng xuất JSON
- Hướng dẫn xuất thủ công
- Tổng quan tự động hóa Fixing a typo in `workouts.md` and completing the file.
<|tool▁calls▁begin|><|tool▁call▁begin|>
Read