当前位置:   article > 正文

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

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
                }
                ]
        }
    ]
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36

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;
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/酷酷是懒虫/article/detail/759444
推荐阅读
相关标签
  

闽ICP备14008679号