简介

nlohmann::basic_json::array_tnlohmann::json 库中的一个类型别名,它代表了一个 JSON 数组。在这个库中,JSON 数组被表示为一个 std::vector,所以 array_t 实际上就是一个 std::vector<nlohmann::json>

这意味着你可以使用 std::vector 的所有方法来操作 nlohmann::basic_json::array_t。例如,你可以使用 push_back 方法来添加一个新的元素,或者使用 size 方法来获取数组的长度。

这里有一个例子,展示了如何使用 nlohmann::basic_json::array_t

#include <nlohmann/json.hpp>

int main() {
    // 创建一个空的 JSON 数组
    nlohmann::json::array_t arr;

    // 添加一些元素
    arr.push_back("hello");
    arr.push_back(123);
    arr.push_back(true);

    // 将数组转换为 JSON 对象
    nlohmann::json j = arr;

    // 输出 JSON
    std::cout << j << std::endl;

    return 0;
}

这个程序将输出以下 JSON:

["hello", 123, true]

注意,nlohmann::json::array_t 可以包含任何类型的 nlohmann::json 对象,这意味着它可以包含字符串、数字、布尔值、null、其他数组或者对象。这使得你可以创建非常复杂的 JSON 结构。


nlohmann::basic_json::array_t 官网介绍

using array_t = ArrayType<basic_json, AllocatorType<basic_json>>;

这是用来存储 JSON 数组的类型。

RFC 8259 描述 JSON 数组如下:

数组是零个或多个值的有序序列。

在 C++ 中存储对象,类型由下面解释的模板参数定义。

模板参数

ArrayType

用于存储数组的容器类型(例如,std::vector 或 std::list)

AllocatorType

用于对象的分配器(例如,std::allocator)

说明

默认类型

对于 ArrayType(std::vector)和 AllocatorType(std::allocator)的默认值,array_t 的默认值为:

std::vector<
 basic_json, // value_type
 std::allocator<basic_json> // allocator_type
>

限制

RFC 8259 规定:

实现可能会设置嵌套深度的最大限制。

在这个类中,数组的嵌套限制没有明确约束。然而,编译器或运行环境可能会引入嵌套深度的最大限制。可以通过调用 JSON 数组的 max_size 函数查询理论限制。

存储

数组作为指针存储在 basic_json 类型中。也就是说,对于任何对数组值的访问,必须解引用类型为 array_t* 的指针。

示例

#include <iostream>
#include <iomanip>
#include <nlohmann/json.hpp>

using json = nlohmann::json;

int main()
{
    std::cout << std::boolalpha << std::is_same<std::vector<json>, json::array_t>::value << std::endl;
}

版本历史

在版本 1.0.0 中添加。

最后更新:2023 年 3 月

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐