rapidjson 解析数组

当使用 RapidJSON 解析数组时,我们需要用到 rapidjson::Document 类的成员函数 IsArray() 来检查 JSON 字符串是否为数组类型,如果是数组类型,我们可以使用 rapidjson::Value 类型的成员函数 Size() 获取数组元素的数量,然后使用循环来遍历数组中的每个元素。

以下是一个使用 RapidJSON 解析数组的示例代码:

#include "rapidjson/document.h"
#include "rapidjson/writer.h"
#include "rapidjson/stringbuffer.h"
#include <iostream>
#include <string>
using namespace rapidjson;
int main() {
    // JSON 字符串
    const char* json = "[1, 2, 3, 4, 5]";
    // 解析 JSON 字符串
    Document document;
    if (document.Parse(json).HasParseError()) {
        std::cout << "Parse error: " << GetParseError_En(document.GetParseError()) << std::endl;
        return 1;
    // 检查是否为数组类型
    if (!document.IsArray()) {
        std::cout << "Not an array" << std::endl;
        return 1;
    // 获取数组元素的数量
    int size = document.Size();
    // 遍历数组中的每个元素
    for (int i = 0; i < size; i++) {
        std::cout << document[i].GetInt() << std::endl;
    return 0;

以上代码首先定义了一个 JSON 字符串,然后使用 Document::Parse() 方法将其解析为 RapidJSON 中的 Document 类型的对象。接下来,我们使用 Document::IsArray() 方法来检查是否为数组类型,如果是,则使用 Document::Size() 方法获取数组元素的数量,并使用循环遍历数组中的每个元素。

请注意,以上代码仅仅是一个示例,实际使用时可能需要进行更多的错误检查和处理。

  •