我有如下一个json文件,使用c++和jsoncpp读取这段数据 文件中数据如下:{ "version": "5.2.1", "flags": {}, "shapes": [ { "label": "circle", "points": [ [ 9.826086956521749, 979.3913043478261 ], [ 21.782608695652186, 981.5652173913044 ] ], "group_id": null, "description": "", "shape_type": "circle", "flags": {} } ], "imagePath": "..\\分割后\\0_0_0.jpg", "imageHeight": 1024, "imageWidth": 1024 }
时间: 2023-07-21 08:08:32 浏览: 211
jsoncpp,C++json头文件
非常感谢您提供的JSON数据。下面是使用C++和JSONcpp库读取该JSON文件的示例代码:
```cpp
#include <iostream>
#include <fstream>
#include <json/json.h>
int main() {
// 读取JSON文件
std::ifstream file("your_json_file.json");
if (!file.is_open()) {
std::cout << "Failed to open JSON file." << std::endl;
return 1;
}
// 解析JSON数据
Json::Value root;
file >> root;
// 读取version字段
std::string version = root["version"].asString();
std::cout << "Version: " << version << std::endl;
// 读取shapes数组
Json::Value shapes = root["shapes"];
if (shapes.isArray()) {
for (int i = 0; i < shapes.size(); ++i) {
Json::Value shape = shapes[i];
// 读取label字段
std::string label = shape["label"].asString();
std::cout << "Label: " << label << std::endl;
// 读取points数组
Json::Value points = shape["points"];
if (points.isArray()) {
for (int j = 0; j < points.size(); ++j) {
// 读取坐标点
double x = points[j][0].asDouble();
double y = points[j][1].asDouble();
std::cout << "Point " << j+1 << ": (" << x << ", " << y << ")" << std::endl;
}
}
}
}
// 读取imagePath字段
std::string imagePath = root["imagePath"].asString();
std::cout << "Image Path: " << imagePath << std::endl;
// 读取imageHeight字段
int imageHeight = root["imageHeight"].asInt();
std::cout << "Image Height: " << imageHeight << std::endl;
// 读取imageWidth字段
int imageWidth = root["imageWidth"].asInt();
std::cout << "Image Width: " << imageWidth << std::endl;
return 0;
}
```
请确保在编译和运行代码之前,已经安装了JSONcpp库,并根据实际情况修改JSON文件路径。这段代码将会逐个读取JSON中的各个字段,并将其打印到控制台上。希望对您有所帮助!如果有任何问题,请随时向我提问。
阅读全文