C++ JSON库 nlohmann::basic_json::array 的用法

简介: C++ JSON库 nlohmann::basic_json::array 的用法

简介

nlohmann::json 是一个 C++ 的 JSON 库,它提供了一种容易和直观的方法来处理 JSON 数据。nlohmann::json::array() 是用来创建一个 JSON 数组的方法。

下面是一些基本的例子:

创建一个空的 JSON 数组:

nlohmann::json j = nlohmann::json::array();

创建一个包含一些元素的 JSON 数组:

nlohmann::json j = nlohmann::json::array({ "element1", "element2", 3.14, false });

你也可以使用 push_back 或者 emplace_back 方法来向 JSON 数组添加元素:

nlohmann::json j = nlohmann::json::array();
j.push_back("element1");
j.emplace_back("element2");

遍历 JSON 数组的元素:

nlohmann::json j = nlohmann::json::array({ "element1", "element2", 3.14, false });
for (auto& element : j) {
    std::cout << element << '\n';
}

以上都是 JSON 数组的基础用法,实际使用时可以根据需要进行扩展和修改。


nlohmann::basic_json::array 官网介绍

static basic_json array(initializer_list_t init = {});

从给定的初始化列表创建一个 JSON 数组值。也就是说,给定一个值列表 a, b, c,创建 JSON 值 [a, b, c]。如果初始化列表为空,则创建空数组 []

参数

  • init (输入):用于创建数组的 JSON 值的初始化列表(可选)

返回值

JSON 数组值

异常安全性

强保证:如果抛出异常,则 JSON 值不会有任何改变。

复杂度

线性于 init 的大小。

注意

此函数只需要用来表示两个无法通过初始化列表构造函数(basic_json(initializer_list_t, bool, value_t))实现的边缘情况。这些情况是:

  • 创建一个所有元素都是第一个元素为字符串的对的数组 - 在这种情况下,初始化列表构造函数会创建一个对象,将第一个元素作为键
  • 创建一个空数组 - 将空的初始化列表传递给初始化列表构造函数会生成一个空对象

示例

以下代码展示了 array 函数的示例。

#include <iostream>
#include <nlohmann/json.hpp>
using json = nlohmann::json;
int main()
{
 // 创建 JSON 数组
 json j_no_init_list = json::array();
 json j_empty_init_list = json::array({});
 json j_nonempty_init_list = json::array({1, 2, 3, 4});
 json j_list_of_pairs = json::array({ {"one", 1}, {"two", 2} });
 // 序列化 JSON 数组
 std::cout << j_no_init_list << '\n';
 std::cout << j_empty_init_list << '\n';
 std::cout << j_nonempty_init_list << '\n';
 std::cout << j_list_of_pairs << '\n';
}

输出:

[]
[]
[1,2,3,4]
[["one",1],["two",2]]

另请参阅

版本历史

  • 在版本 1.0.0 中添加。
目录
相关文章
|
19天前
|
存储 C++ 容器
C++STL(标准模板库)处理学习应用案例
【4月更文挑战第8天】使用C++ STL,通过`std:vector`存储整数数组 `{5, 3, 1, 4, 2}`,然后利用`std::sort`进行排序,输出排序后序列:`std:vector<int> numbers; numbers = {5, 3, 1, 4, 2}; std:sort(numbers.begin(), numbers.end()); for (int number : numbers) { std::cout << number << " "; }`
19 2
|
10天前
|
JSON API 数据格式
python的request库如何拿到json的返回值
python的request库如何拿到json的返回值
10 0
|
17天前
|
C++
glog --- C++日志库
glog --- C++日志库
|
25天前
|
XML JSON JavaScript
推荐一个比较好用的c++版本http协议库-cpp-httplib
推荐一个比较好用的c++版本http协议库-cpp-httplib
38 1
|
1月前
|
安全 网络性能优化 Android开发
深入解析:选择最佳C++ MQTT库的综合指南
深入解析:选择最佳C++ MQTT库的综合指南
87 0
|
1月前
|
XML 运维 监控
【深入探究 C++ 日志库清理策略】glog、log4cplus 和 spdlog 的日志文件管理策略
【深入探究 C++ 日志库清理策略】glog、log4cplus 和 spdlog 的日志文件管理策略
67 0
|
2月前
|
JavaScript 前端开发
总结TypeScript 的一些知识点:TypeScript Array(数组)(下)
一个数组的元素可以是另外一个数组,这样就构成了多维数组(Multi-dimensional Array)。
|
2月前
|
存储 JavaScript 前端开发
总结TypeScript 的一些知识点:TypeScript Array(数组)(上)
数组对象是使用单独的变量名来存储一系列的值。
|
3月前
|
存储 安全 Swift
在Swift中,数组(Array)
在Swift中,数组(Array)
29 3
|
4月前
|
Ruby