当前位置: 首页 > article >正文

[C/C++] -- JSON for Modern C++

JSON for Modern C++(nlohmann/json)是一个流行的 C++ JSON 库,由德国开发者nlohmann编写。这个库提供了简洁而灵活的 API,使得在C++中解析和生成JSON数据变得非常方便。

1.JSON简介

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,用于在不同系统之间传输和存储数据。它基于JavaScript语法,但已经成为一种独立于编程语言的通用格式。

以下是 JSON 文件的一些特点和常见用途:

  1. 易读性:JSON 使用人类可读的文本格式表示数据,易于阅读和理解。

  2. 轻量级:相比于 XML 等其他格式,JSON 是一种轻量级的数据格式,适合在网络传输和存储中使用。

  3. 数据结构:JSON 支持包括对象(object)、数组(array)、字符串(string)、数字(number)、布尔值(true/false)和 null 在内的多种数据类型。

  4. 常见用途:JSON 文件常用于 Web 开发中,作为前后端数据交换的标准格式。它也经常用于配置文件、日志记录等场景。

开源地址:

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

2.使用方法

  • 序列化
#include "json.hpp"
using json = nlohmann::json;

#include <iostream>
#include <vector>
#include <map>
#include <string>
using namespace std;

// json序列化示例1
void func1()
{
    json js;
    js["姓名"] = "afison";
    js["学号"] = 1222034907;
    js["性别"] = "男";
    string sendBuf = js.dump();
    cout << sendBuf.c_str() << endl;
}

// json序列化示例2
void func2()
{
    json js;
    // 直接序列化一个vector容器
    vector<int> vec;
    vec.push_back(4);
    vec.push_back(5);
    vec.push_back(6);
    js["list"] = vec;
    // 直接序列化一个map容器
    map<int, string> m;
    m.insert({1, "小红"});
    m.insert({2, "小明"});
    m.insert({3, "小兰"});
    js["name"] = m;
    cout << js << endl;
}

int main()
{
    func1();
    func2();
    return 0;
}

  • 反序列化
int main()
{
    string recvBuf = func1();
    //数据的反序列化 
    json jsbuf = json::parse(recvBuf);//反序列化
    cout<<jsbuf["姓名"]<<endl;
    cout<<jsbuf["学号"]<<endl;
    cout<<jsbuf["性别"]<<endl;
    return 0;
}


http://www.kler.cn/a/231874.html

相关文章:

  • PCL 三维重建 耳切三角剖分算法
  • python怎么加锁
  • 深入List集合:ArrayList与LinkedList的底层逻辑与区别
  • Python 使用Django进行单元测试unittest
  • git本地分支推送到远程和远程pull到本地
  • 微服务链路追踪skywalking安装
  • Centos 内存和硬盘占用情况以及top作用
  • JVM 性能调优 - 参数基础(2)
  • Java实现批量视频抽帧2.0
  • 前端架构: 脚手架的开发流程和常用框架
  • 基于“python+”潮汐、风驱动循环、风暴潮等海洋水动力模拟实践技术
  • macOS系统下彻底删除应用程序和其数据、配置等
  • 《Git 简易速速上手小册》第1章:Git 基础(2024 最新版)
  • Python进阶----在线翻译器(Python3的百度翻译爬虫)
  • get通过发送Body传参-工具类
  • Go 语言中如何大小端字节序?int 转 byte 是如何进行的?
  • 小白水平理解面试经典题目LeetCode 21. Merge Two Sorted Lists【Linked List类】
  • 【Web - 框架 - Vue】随笔 - 通过`CDN`的方式使用`VUE 2.0`和`Element UI`
  • CDN相关和HTTP代理
  • nodejs将console.log保存到log.txt文档中(electron工具)
  • 图像处理入门:OpenCV的基础用法解析
  • 09 AB 10串口通信发送原理
  • SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式 基础(持续更新~)
  • PdfFactory Pro软件下载以及序列号注册码生成器
  • 总结-回想2023
  • Java图形化界面编程——Container容器 笔记