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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/34364.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

什么是大模型?一文读懂大模型的基本概念

大模型是指具有大规模参数和复杂计算结构的机器学习模型。本文从大模型的基本概念出发&#xff0c;对大模型领域容易混淆的相关概念进行区分&#xff0c;并就大模型的发展历程、特点和分类、泛化与微调进行了详细解读&#xff0c;供大家在了解大模型基本知识的过程中起到一定参…

win7 的 vmware tools 安装失败

没有安装vmware tools的系统屏幕显示异常。桌面是比较小的图像&#xff0c;四周是黑边在 vmware 软件里 方法1&#xff0c;下补丁 https://www.catalog.update.microsoft.com/Search.aspx?qkb4474419 方法2&#xff0c;使用老版vm tools http://softwareupdate.vmware.com/c…

Linux测试端口的连通性的四种方法

方法一、telnet telnet为用户提供了在本地计算机上完成远程主机工作的能力&#xff0c;因此可以通过telnet来测试端口的连通性&#xff0c;具体用法格式&#xff1a; telnet ip port说明&#xff1a; ip&#xff1a;是测试主机的ip地址 port&#xff1a;是端口&#xff0c;比…

【差分数组】个人链接-Leetcode-2249. Count Lattice Points Inside a Circle

题目链接&#xff1a;https://leetcode.cn/problems/count-lattice-points-inside-a-circle/description/ 题目大意&#xff1a;给出一系列圆的圆心坐标和半径&#xff0c;求在这些圆内部&#xff08;边缘也算&#xff09;的格点的数量。 思路&#xff1a;简单的思路就是暴力…

【ARM】MDK工程切换高版本的编译器后出现error A1137E报错

【更多软件使用问题请点击亿道电子官方网站】 1、 文档目标 解决工程从Compiler 5切换到Compiler 6进行编译时出现一些非语法问题上的报错。 2、 问题场景 对于一些使用Compiler 5进行编译的工程&#xff0c;要切换到Compiler 6进行编译的时候&#xff0c;原本无任何报错警告…

各大广告商竞相厮杀下,诞生了一个偏门的副业方式

前段时间&#xff0c;想买摩托车&#xff0c;但是媳妇不让买&#xff0c;所以我打算偷偷买&#xff0c;然后萌生了去摆摊赚钱的想法&#xff0c;但是还没有实施就在网上接触到了“某赚”APP&#xff0c;于是一发不可收拾&#xff0c;用我的话来说&#xff0c;我做的不是副业&am…

佑驾创新A股夭折再冲港股:三年亏损超5亿,商业化盈利难题何解

《港湾商业观察》廖紫雯 日前&#xff0c;深圳佑驾创新科技股份有限公司&#xff08;以下简称&#xff1a;佑驾创新&#xff09;递表港交所&#xff0c;保荐机构为中信证券、中金公司。佑驾创新曾于2023年8月启动A股上市辅导&#xff0c;但2024年5月公司终止了与辅导机构的上市…

软考-软件设计师

软考 软考科目 软考分为初级、中级、高级&#xff0c;初级含金量相对不够&#xff0c;高级考试有难度&#xff0c;所以大多数人都在考中级&#xff0c;中级也分很多科目&#xff0c;我考的是软件设计师&#xff08;已经通过&#xff09;。 合格标准 考试分为上午题和下午题…

Web框架基础知识

什么是框架&#xff1f; 盖高楼&#xff0c;框架结构。 框架结构就是高楼的主体&#xff0c;基础功能。 把很多基础功能已经实现了(封装了)。 框架&#xff1a;在基础语言之上&#xff0c;对各种基础功能进行封装&#xff0c;方便开发者&#xff0c;提高开发效率。e.g&#xff…

CDN加速怎么实现缓存Range请求

背景说明 使用天翼云CDN加速后&#xff0c;如果用户访问的文件较大&#xff0c;且客户端会发起Range请求&#xff0c;则需要参考本文进行设置&#xff0c;确保Range请求可以缓存。 详细信息 天翼云CDN加速&#xff0c;默认不开启Range回源和完整文件回源&#xff0c;此时如果…

python实例代码 - 多层感知机预测销售情况

多层感知器预测销售情况 将一种广告投放到TV、newspaper、radio上时不同组合的情况会对应不同的销售量。 # -*- coding:utf-8 -*- # PredicateAdvertise.py # 多层感知器预测销售情况 # 将一种广告投放到TV、newspaper、radio上时不同组合的情况会对应不同的销售量。 import …

【ai】trition:tritonclient yolov4:部署ubuntu18.04

X:\05_trition_yolov4_clients\01-python server代码在115上,client本想在windows上, 【ai】trition:tritonclient.utils.shared_memory 仅支持linux 看起来要分离。 client代码远程部署在ubuntu18.04上 ubuntu18.04 创建yolov4-trition python=3.7 环境 (base) zhangbin@ub…

基于matlab的图像灰度化与图像反白

1原理 2.1 图像灰度化原理 图像灰度化是将彩色图像转换为灰度图像的过程&#xff0c;使得每个像素点仅包含一个灰度值&#xff0c;从而简化了图像的复杂度。灰度化原理主要可以分为以下几种方法&#xff1a; 亮度平均法 原理&#xff1a;将图像中每个像素的RGB值的平均值作为…

[深度学习] 生成对抗网络GAN

生成对抗网络&#xff08;Generative Adversarial Networks&#xff0c;GANs&#xff09;是一种由 Ian Goodfellow 等人在2014年提出的深度学习模型Generative Adversarial Networks。GANs的基本思想是通过两个神经网络&#xff08;生成器和判别器&#xff09;的对抗过程&#…

深度分析:Apache Hadoop及其在大数据处理中的应用

引言 在大数据处理领域&#xff0c;Apache Hadoop因其强大的分布式计算能力和存储能力&#xff0c;已成为数据密集型应用的核心技术。自2006年开源以来&#xff0c;Hadoop已经发展成为一个庞大的生态系统&#xff0c;支持各种数据处理任务。本文将深入分析Hadoop的核心特点&am…

VMware vCenter Server 8.0U3 发布下载 - 集中式管理 vSphere 环境

VMware vCenter Server 8.0U3 发布下载 - 集中式管理 vSphere 环境 Server Management Software | vCenter 请访问原文链接&#xff1a;https://sysin.org/blog/vmware-vcenter-8-u3/&#xff0c;查看最新版。原创作品&#xff0c;转载请保留出处。 作者主页&#xff1a;sys…

Python项目开发实战,网站App平台注册用户分析_案例教程编程实例课程详解

在Python项目开发实战中,针对网站或App平台注册用户进行深入分析是一项重要任务。这不仅有助于了解用户行为、优化产品功能,还能为市场推广和决策制定提供有力支持。以下是一个详细的用户分析流程,涵盖数据收集、预处理、分析以及结果呈现等关键环节。 一、引言 在数字化时代…

如何解决ssh远程连接自动断开的问题

文章目录 1. 问题描述2. 配置SSH设置2.1 调整服务器端的设置2.2 调整客户端的设置 3. 调整用户断开时长 1. 问题描述 SSH 远程连接断开是一个常见的问题&#xff0c;尤其是在网络不稳定或长时间没有活动时。文本介绍一些常见的方法和技巧来保持 SSH 连接稳定和避免断开。 2. …

新手指南:如何用 VSCode 编写 Go 语言入门代码

本章教程,主要介绍如何在VSCODE中,运行GO语言的入门代码。 一、准备一个GO语言代码 一个很简单的代码,用GO语言在控制台打印输出:Hello, World! package mainimport "fmt"func main() {fmt.Println("Hello, World!") }二、安装GO语言SDK 下载地址:

flex的三个参数

参考 flex布局(grow shrink basis) flex中有三个参数分别是grow shrink basis flex-grow 属性定义项目的放大比例&#xff0c;默认为0&#xff0c;即如果存在剩余空间&#xff0c;也不放大。只要不为0就会占用剩余空间 flex-shrink 属性定义了项目的缩小比例&#xff0c;默认为…