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 中添加。
目录
打赏
0
1
1
0
219
分享
相关文章
第二问:C++中const用法详解
`const` 是 C++ 中用于定义常量的关键字,主要作用是防止值被修改。它可以修饰变量、指针、函数参数、返回值、类成员等,确保数据的不可变性。`const` 的常见用法包括:
219 2
多维数组操作,不要再用遍历循环foreach了!来试试数组展平的小妙招!array.flat()用法与array.flatMap() 用法及二者差异详解
理论上array.flat()能做的事情,array.flatMap()都可以做,但是array.flat()更简单,占用内存更少,执行更快。 这个相对冷门一些,w3school上都没有相关教程,看到就是赚到,收藏就是财富! 博客不应该只有代码和解决方案,重点应该在于给出解决方案的同时分享思维模式,只有思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助
【C++】map、set基本用法
本文介绍了C++ STL中的`map`和`set`两种关联容器。`map`用于存储键值对,每个键唯一;而`set`存储唯一元素,不包含值。两者均基于红黑树实现,支持高效的查找、插入和删除操作。文中详细列举了它们的构造方法、迭代器、容量检查、元素修改等常用接口,并简要对比了`map`与`set`的主要差异。此外,还介绍了允许重复元素的`multiset`和`multimap`。
126 3
【C++】map、set基本用法
|
7月前
|
Numpy学习笔记(一):array()、range()、arange()用法
这篇文章是关于NumPy库中array()、range()和arange()函数的用法和区别的介绍。
309 6
Numpy学习笔记(一):array()、range()、arange()用法
C++ 中 std::array<int, array_size> 与 std::vector<int> 的深入对比
本文深入对比了 C++ 标准库中的 `std::array` 和 `std::vector`,从内存管理、性能、功能特性、使用场景等方面详细分析了两者的差异。`std::array` 适合固定大小的数据和高性能需求,而 `std::vector` 则提供了动态调整大小的灵活性,适用于数据量不确定或需要频繁操作的场景。选择合适的容器可以提高代码的效率和可靠性。
171 0
|
5月前
|
C++
第十三问:C++中静态变量的用法有哪些?
本文介绍了 C++ 中静态变量和函数的用法及原理。静态变量包括函数内的静态局部变量和类中的静态成员变量,前者在函数调用间保持值,后者属于类而非对象。静态函数不能访问非静态成员,但可以通过类名直接调用。静态链接使变量或函数仅在定义文件内可见,避免命名冲突。
127 0
JSON(C++)
JSON(C++)
64 1
Java 中数组Array和列表List的转换
本文介绍了数组与列表之间的相互转换方法,主要包括三部分:1)使用`Collections.addAll()`方法将数组转为列表,适用于引用类型,效率较高;2)通过`new ArrayList&lt;&gt;()`构造器结合`Arrays.asList()`实现类似功能;3)利用JDK8的`Stream`流式计算,支持基本数据类型数组的转换。此外,还详细讲解了列表转数组的方法,如借助`Stream`实现不同类型数组间的转换,并附带代码示例与执行结果,帮助读者深入理解两种数据结构的互转技巧。
Java 中数组Array和列表List的转换
JavaScript中通过array.map()实现数据转换、创建派生数组、异步数据流处理、复杂API请求、DOM操作、搜索和过滤等,array.map()的使用详解(附实际应用代码)
array.map()可以用来数据转换、创建派生数组、应用函数、链式调用、异步数据流处理、复杂API请求梳理、提供DOM操作、用来搜索和过滤等,比for好用太多了,主要是写法简单,并且非常直观,并且能提升代码的可读性,也就提升了Long Term代码的可维护性。 只有锻炼思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~

热门文章

最新文章