欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 科技 > IT业 > C++ boost::property_tree::read_json读取虚拟墙文件

C++ boost::property_tree::read_json读取虚拟墙文件

2024/10/25 17:19:07 来源:https://blog.csdn.net/qq_40464599/article/details/139984229  浏览:    关键词:C++ boost::property_tree::read_json读取虚拟墙文件

输入是一个json文件如下

VirtualWall.json
{"LAYERSUM":1,"LAYER":[{"LAYERNUM":0,"LINESUM":23,"LINE":[{"BEGIN":{"X":-3028.6428,"Y":-10671.736},"END":{"X":-3167.0588,"Y":23688.873},"LINENUM":1,"CONFIG":1},{"BEGIN":{"X":-3028.2437,"Y":-10476.9},"END":{"X":29358.871,"Y":-10387.55},"LINENUM":2,"CONFIG":1},{"BEGIN":{"X":-555.5391,"Y":3323.65},"END":{"X":-800.3256,"Y":26135.783},"LINENUM":3,"CONFIG":1},{"BEGIN":{"X":-601.88916,"Y":-8386.228},"END":{"X":26273.258,"Y":-8285.991},"LINENUM":4,"CONFIG":1},{"BEGIN":{"X":26273.258,"Y":-8285.991},"END":{"X":26051.678,"Y":26338.797},"LINENUM":5,"CONFIG":1},{"BEGIN":{"X":28225.521,"Y":-10206.251},"END":{"X":27903.93,"Y":26526.918},"LINENUM":6,"CONFIG":1}]}]
}

json中含有一系列的线段起点和终点,我们的目标时是其提取出来。

代码如下

#include <boost/property_tree/ptree.hpp>
#include <boost/property_tree/json_parser.hpp>
#include <iostream>int main() {try {// 创建一个 property tree 对象boost::property_tree::ptree pt;boost::property_tree::read_json("/home/juchunyu/20231013/240606/json_read/VirtualWall.json", pt);// 从 property tree 中获取数据int layerSum = pt.get<int>("LAYERSUM");std::cout << "LAYERSUM: " << layerSum << std::endl;// 获取名为 "LAYER" 的数组const boost::property_tree::ptree& layerArray = pt.get_child("LAYER");int i = 0;// 遍历每个图层for (const auto& layer : layerArray) {// 获取每个图层的 "LINE" 数组const boost::property_tree::ptree& lineArray = layer.second.get_child("LINE");// 遍历每条线for (const auto& line : lineArray) {// 获取 BEGIN 和 END 的 X、Y 坐标double beginX = line.second.get<double>("BEGIN.X");double beginY = line.second.get<double>("BEGIN.Y");double endX = line.second.get<double>("END.X");double endY = line.second.get<double>("END.Y");// 输出 BEGIN 和 END 的坐标信息std::cout << "=====" << i << "==========" << std::endl;std::cout << "BEGIN: X=" << beginX << ", Y=" << beginY << std::endl;std::cout << "END: X=" << endX << ", Y=" << endY << std::endl;i++;}}} catch (boost::property_tree::ptree_error& e) {std::cerr << "Error reading JSON: " << e.what() << std::endl;}return 0;
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com