1. nlohmann-json

  • 1. nlohmann-json

    • 1.1. 定义类型
    • 1.2. 构造 json 结构
    • 1.3. 和结构体关联

git网址

里边包含单头文件项目,只需要引入头文件 json.hpp 就可以使用使用,特别试用于demo

说明:可以和 python,golang 的 json 库媲美了。官网也支持单头文件的形式

1.1. 定义类型

#include "nlohmann/json.hpp"
using json = nlohmann::json;
json j1;
json j2 = json::object();
json j3 = json::array();
std::cout << j1.type_name();

1.2. 构造 json 结构

#include <fstream>
#include <iostream>
#include <vector>
#include <string>
#include "nlohmann/json.hpp"using json = nlohmann::json;
using namespace std;// 从文件构建
json data;
ifstream("test.json") >> data;//从字符串构建
std::string s = R"(
{"name": "first name","credits": 1754500,"ranking": {"name": "seconde name","info": [ "1","2","3"]}
}
)";
data = json::parse(s);//读取数据,通过下标或者key获取的类型都是 json 格式
cout<<data["name"].get<string>()<<endl;  //first name
vector<string> info = data["ranking"]["info"].get<vector<string>>();  //[ "1","2","3"]

1.3. 和结构体关联

#include <string>
#include "nlohmann/json.hpp"using json = nlohmann::json;struct Player{std::string name;int credits;int ranking;
};void to_json(nlohmann::json& j, const Player& p) {j = json{  {"name", p.name}, {"credits", p.credits}, {"ranking", p.ranking} };
}void from_json(const nlohmann::json& j, Player& p) {j.at("name").get_to(p.name);j.at("credits").get_to(p.credits);j.at("ranking").get_to(p.ranking);
}int main(){auto j = R"([{"name": "Judd Trump","credits": 1754500,"ranking": 1},{"name": "Neil Robertson","credits": 1040500,"ranking": 2},{"name": "Ronnie O'Sullivan","credits": 954500,"ranking": 3}    ])"_json; std::vector<Player> players = j.get<std::vector<Player>>();std::cout << "name:    " << players[2].name << std::endl;std::cout << "credits: " << players[2].credits << std::endl;std::cout << "ranking: " << players[2].ranking << std::endl;return 0;
}

C++的nlohmann-json相关推荐

  1. nlohmann/json使用笔记

    nlohmann/json是一个用于解析json的开源C++库,口碑一流,号称有业界最好的性能,并且使用非常方便直观,是很多c++程序员的首选. #include "nlohmann/jso ...

  2. C++ nlohmann/json 的主要用法

    文章目录 前言 准备工作 引用头文件: 主要用法: 一.声明与构造 1 纯粹声明 2 内容构造 二.解析与序列化 字符串 解析 序列化 文件:// 比如有文件 c:\rankings.json,其内容 ...

  3. nlohmann json用法

    nlohmann json用法 介绍 demo 介绍 一个开源的c++ json库,类似于STL,挺好用的 demo nlohmann::json j; j["x"] = 1; j ...

  4. c++11:nlohmann::json进阶使用(三)使用basic_json模板类

    nlohmann::json是非常好用的一个json开源解析库.nlohmann/json的源码是基于C++11标准写的,整个源码就是一个文件 nlohmann/json.hpp,引用非常方便. 关于 ...

  5. nlohmann/json 的用法示例

    nlohmann/json 是一个C++实现的JSON解析器,使用非常方便直观.由于查看文档篇幅过长,不便于迅速阅读抓重点.而且,所举例的某些用法实践上其实比较少用到,而某些实践上常用到的一些用法,官 ...

  6. C++ 之 nlohmann::json 一个不错的json库

    前言 最近在搞一个C++项目,用到了json和类的相互转化.但是c++没有反射,也没有像java一个方便的插件,没法办只能自己搞一个了.网上找了一下,发现nlohmann::json不错.已经运用到实 ...

  7. 【C++】C++库nlohmann / json的使用

    nlohmann / json for Modern C++ 前言 一.nlohmann/json库简述 1. 概述 2. 优点 3. 配置 二.nlohmann/json库的基本操作 1. 读取 / ...

  8. c++中nlohmann json的使用

    文章目录 一.json.hpp库下载及安装 1.1 开源地址及引入方法 1.2 demo程序测试 二.nlohmann json基本操作 2.1 由basic value创建json 2.2 由jso ...

  9. C++ nlohmann/json 的主要用法(cout、printf打印,异常try...catch处理)

    文章目录 前言 准备工作 引用头文件: 主要用法: 一.声明与构造 1 纯粹声明 2 内容构造 二.解析与序列化 字符串 解析 序列化 文件:// 比如有文件 c:\rankings.json,其内容 ...

  10. 2022-9-16-C++json库--nlohmann 学习

    目录 前言 准备工作 前言 nlohmann/json 是一个用于解析json的开源c++库,口碑一流,号称有业界最好的性能,并且使用非常方便直观,是很多c++程序员的首选.开源官网处有详细说明用法, ...

最新文章

  1. 基本数据类型与表达式2 - 零基础入门学习Delphi03
  2. powershell提取html字段,Windows PowerShell:PowerShell 中的 HTML 报告
  3. bank should not have so many managers
  4. 网页元素坐标表示及坐标计算方法
  5. php extname shared,PHP: 编写第一个PHP扩展
  6. Winform字体统一方案
  7. Kernel panic -not syncing:Attempted to kill init!
  8. Java进阶学习路线
  9. myabtis 数字+逗号 传参问题 $和#
  10. 【转】C++中#include包含头文件带 .h 和不带 .h 的区别
  11. java - 通用 CRUD(增、删、改、查)工具类,代码高效复用
  12. python datetime.datetime 当前_关于datetime:如何让python显示当前时间(东部)
  13. 框架设计之菜鸟漫漫江湖路系列 开篇
  14. 谷歌披露影响多个苹果操作系统的零点击Image I/O 漏洞和开源库 OpenEXR漏洞
  15. verilog实现多周期处理器之——(三)数据相关问题及其解决
  16. 《FLUENT 14流场分析自学手册》——1.4 流体运动及换热的多维方程组
  17. Ftp搜索引擎开发实践
  18. 十大排序算法笔记(C语言)(一)选择排序、冒泡排序、插入排序、希尔排序、快速排序
  19. Android 打飞机 小游戏 的实现 - 画面移动 对象封装 碰撞效果
  20. 【报告分享】小红书平台2021 11.11期间行业投放分析报告-千瓜数据(附下载)

热门文章

  1. 用Python生成动态好玩的二维码
  2. java入门学习(1)—— 接收键盘输入的值
  3. DSP TMS320C5509A之DMA
  4. Go 泛型 【翻译】
  5. 详解反转字符串算法题
  6. 如何解决相机打开后显示灰色(只针对联想电脑)
  7. MATLAB如何取整数
  8. 简单的css注册页面
  9. 软考高级系统架构设计师:DNS负载均衡机制和反向代理的负载均衡机制
  10. 微信小程序可用的第三方库