json for modern c++

news/2024/11/29 7:44:56/

目录

  • json for modern c++
    • 概述
    • 编译问题
      • 问题描述
      • 问题解决
    • 读取JSON文件demo

json for modern c++

GitHub - nlohmann/json: JSON for Modern C++

概述

json for modern c++是一个德国大牛nlohmann写的,该版本的json有以下特点:
1.直观的语法。
2.整个代码由一个头文件组成json.hpp,没有子项目,没有依赖关系,没有复杂的构建系统,使用起来非常方便。
3.使用c++11标准编写。
4.使用json 像使用STL容器一样。
5.STL和json容器之间可以相互转换。

编译问题

问题描述

看所有文章,都是写下载该工程,把json.hpp包含即可。如下图所示。
在这里插入图片描述
在这里插入图片描述

结果编译不过,编译报错如下图所示
在这里插入图片描述

问题解决

后查找资料,查到该JSON库有个Issues中提到了该问题,并解决了。
‘nlohmann/json.hpp’ file not found · Issue #2188 · nlohmann/json · GitHub
在这里插入图片描述

后续按照人提供的思路,输入指令sudo apt install nlohmann-json-dev 即可编译通过

读取JSON文件demo

参考文章:
JSON for Modern C++ 库的介绍与使用示例代码_mordenjson
示例代码如下所示:

#include <iostream>
#include <fstream>
#include <nlohmann/json.hpp>using json = nlohmann::json;/**simple.json 文件
{"ok":true,"height": 20.123,"width": 1000,"name": "test"
}*/int main()
{json j;                             // json 对象std::ifstream jfile("simple.json"); // 流读取jfile >> j;                         // 文件流形式读取 json 文件, 并存为 jjfile.close();std::cout << "json j = " << j << std::endl;bool ok = j.at("ok");float height = j["height"];int width = j["width"];std::string name = j.at("name");std::cout << "ok = " << ok << std::endl;std::cout << "height = " << height << std::endl;std::cout << "width = " << width << std::endl;std::cout << "name = " << name << std::endl;return 0;
}

运行结果如下图所示
在这里插入图片描述


http://www.ppmy.cn/news/47644.html

相关文章

Spring项目创建与 Spring Bean 的存储与读取

目录 一、创建Spring项目 1.1 创建Maven项目 1.2 添加 Spring 框架依赖 1.3 添加启动类 二、Bean对象的创建与存储 2.1 创建Bean 2.2 将Bean注册到容器 2.3 获取并使用Bean对象 2.3.1 创建Spring上下文 2.3.2 从Spring容器中获取Bean对象​编辑 延申&#xff08;多种…

政企数智办公巡展回顾 | 通信赋能传统行业数智化转型的应用实践

在宏观政策引导、技术革新与企业内部数字化改革需求的共同驱使下&#xff0c;数智办公已经成为各行各业转型升级的必由之路。关注【融云 RongCloud】&#xff0c;了解协同办公平台更多干货。 近期&#xff0c;“连接无界 智赋未来” 融云 2023 政企数智办公巡展在北京、杭州相…

X进制转十进制黄金万能算法

单纯、混合进制通吃&#xff0c;真正的黄金万能的进制转换方法。 【学习的细节是欢悦的历程】 Python 官网&#xff1a;https://www.python.org/ Free&#xff1a;大咖免费“圣经”教程《 python 完全自学教程》&#xff0c;不仅仅是基础那么简单…… 地址&#xff1a;https:/…

Qt音视频开发27-ffmpeg视频旋转显示

一、前言 用手机或者平板拍摄的视频文件,很可能是旋转的,比如分辨率是1280x720,确是垂直的,相当于分辨率变成了720x1280,如果不做旋转处理的话,那脑袋必须歪着看才行,这样看起来太难受,所以一定要想办法解析到视频的旋转角度,然后根据这个角度重新绘制。在窗体那边也…

匿名管道与命名管道

匿名管道与命名管道 一&#xff0c;进程间通信什么是进程间通信进程间通信的目的管道的概念 二&#xff0c;匿名管道匿名管道的创建匿名管道使用匿名管道的特性以及四种场景匿名管道的原理通过匿名管道实现简易进程池。 三&#xff0c;命名管道命名管道的创建命名管道的使用命名…

应急响应 - Windows启动项分析,Windows计划任务分析,Windows服务分析

「作者简介」&#xff1a;CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者 「推荐专栏」&#xff1a;对网络安全感兴趣的小伙伴可以关注专栏《网络安全入门到精通》 Windows应急响应 一、启动项分析1、msconfig2、gpedit.msc3、注册表4、msinfo325、启动菜…

深入拆解 Java 虚拟机-打卡|01 | Java代码是怎么运行的?

文章目录 Java代码是怎么运行的&#xff1f;几个为什么为什么在虚拟机中运行&#xff1f;Java 虚拟机具体又是怎样运行 Java 代码的呢?Java虚拟机的运行效率怎么样&#xff1f; 总结 Java代码是怎么运行的&#xff1f; 来来来&#xff0c;运行个"Hello word !“告诉我是…

C#内建接口:IComparable

目录 一、介绍 二、示例 注意&#xff1a;Array.Sort(people);调用了CompareTo方法 注意&#xff1a;WriteLine输出会调用ToString 三、笔试题实战 一、介绍 IComparable是一个接口&#xff0c;它定义了一个用于比较对象的方法CompareTo。在C#中&#xff0c;IComparable接…