json for modern c++

文章介绍了nlohmann/json库在C++中的使用,这是一个简洁且易于使用的JSON库。开发者遇到编译问题,即找不到nlohmann/json.hpp文件,通过在GitHubIssue中找到解决方案,安装nlohmann-json-dev后成功编译。还提供了一个读取JSON文件的C++代码示例,展示了如何从simple.json文件中提取数据。
摘要由CSDN通过智能技术生成

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 文件, 并存为 j
  jfile.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;
}

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一只小阿大:)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值