如何在我的 C++ 代码中使用 rapidjson 库?

实际上我正在尝试使用 rapidjson library 解析一个 json 文件。但是当我试图在我的代码中添加这个头文件时,它会向我显示这样的错误

"[Error] rapidjson/document.h: No such file or directory" and

"recipe for target 'main_1.o' failed"

这里 main_1 是我的文件名。这是我的实际代码

#include<stdio.h>
#include "rapidjson/document.h"

using namespace rapidjson;

Document document;
document.Parse(json);

int main()
{
    char name[50];
    int t_value;
    return 0;

}

而且我还不知道我想在哪里添加我的 json 文件?

但我真的不知道我在哪里做错了?请任何人帮助我。

stack overflow How to use rapidjson library in my c++ code?
原文答案

答案:

作者头像

json的安装请查看以下链接,您也可以访问rapidjson官网

RapidJson installation

对于您的代码:下载 rapidjson 的所有头文件并将其保存在 rapidjson 文件夹(新文件夹)下的当前文件夹中

在main里面写下面的代码,编译器会因此报错。

Document document;
document.Parse(json);
作者头像

如果您使用的是 Ubuntu,则可以使用包管理器来安装 rapidjson 库

$ sudo apt-get update
$ sudo apt-get install rapidjson-dev 

对我来说,rapidjson 包含的路径是

/usr/include/rapidjson

在 cpp/hpp 文件中

#include <rapidjson/document.h>

为我工作

加载文件的示例程序

#include <iostream>
#include <fstream>
#include <cstdlib>

#include <rapidjson/document.h>
#include <rapidjson/istreamwrapper.h>
#include <rapidjson/writer.h>
#include <rapidjson/stringbuffer.h>
#include <rapidjson/ostreamwrapper.h>

int main()
{

    using namespace rapidjson;

    std::ifstream ifs { R"(myfile.json)" };
    if ( !ifs.is_open() )
    {
        std::cerr << "Could not open file for reading!n";
        return EXIT_FAILURE;
    }

    IStreamWrapper isw { ifs };

    Document doc {};
    doc.ParseStream( isw );

    StringBuffer buffer {};
    Writer<StringBuffer> writer { buffer };
    doc.Accept( writer );

    if ( doc.HasParseError() )
    {
        std::cout << "Error  : " << doc.GetParseError()  << 'n'
                  << "Offset : " << doc.GetErrorOffset() << 'n';
        return EXIT_FAILURE;
    }

    const std::string jsonStr { buffer.GetString() };

    std::cout << jsonStr << 'n';

    std::cout <<"donen";
    return EXIT_SUCCESS;
}

演示代码来源: How to read json file using rapidjson and output to std::string?