當然是先安裝 MinGW + VSCode 設定
VSCode IntelliSence + GDB
前面連結點下去,怕爆.jpg
Visual Studio 就直接去 NuGet 下載套件就可以使用了。
想更簡單一點,直接 simple_include/nlohmann 裡面抓到 json.hpp
就可以 #include "nlohmann/json.hpp"
├── blood-pressure-input.json
├── main.cpp
├── main.exe
└── nlohmann
└── json.hpp
main.cpp
#include <iostream> #include <fstream> #include "nlohmann/json.hpp" using json = nlohmann::json; int main() { json j; j["123"] = 123; std::cout << j << std::endl; return 0; }
HL7 FHIR Observation Blood Pressure
https://www.hl7.org/fhir/observation-example-bloodpressure.json.html
之後可能就用 QT C++ 的 Function 或 cURL 先下載之類的
這裡只示範怎麼用純 C++ 去讀取
上面的 example 做為 blood-pressure-input.json
C++ 檔案讀取
#include <iostream> #include <fstream> #include "nlohmann/json.hpp" int main() { std::ifstream ifs("blood-pressure-input.json"); nlohmann::json BPD = nlohmann::json::parse(ifs); // Blood Pressure Data std::cout << std::setw(2) << BPD << std::endl; return 0; }
確認他可以讀取成功,那就來做更進階的讀取。
如果你知道 JavaScript 的 JSON 怎麼讀取,這裡就怎麼讀取。
這裡的 Code 僅且示範怎麼拿取資料,最好還是把這些資料做成 Object Class。
讀取測量時間
std::string measureDate = BPD["effectiveDateTime"].get<std::string>(); std::cout << "Effective DateTime: " << measureDate << std::endl;
讀取測量部位
std::string bs = BPD["bodySite"]["coding"][0]["display"].get<std::string>(); std::cout << "Body Site: " << bs << std::endl;
測量狀況
std::string total_interpretation = BPD["interpretation"][0]["text"].get<std::string>(); std::cout << "Interpretation status: " << total_interpretation << std::endl;
將多筆數值讀取(包含收縮壓、舒張壓)
auto component = BPD["component"]; for (auto& it: component) { std::string display = it["code"]["coding"][0]["display"].get<std::string>(); std::string unit = it["valueQuantity"]["unit"].get<std::string>(); std::cout << display << ": " << it["valueQuantity"]["value"] << " " << unit << std::endl; std::string interpretation = it["interpretation"][0]["coding"][0]["display"].get<std::string>(); std::cout << "Status: " << interpretation << std::endl; }