21xrx.com
2024-09-20 00:40:29 Friday
登录
文章检索 我的文章 写文章
C++ 如何读取 JSON 文件
2023-07-03 15:42:44 深夜i     --     --
C++ JSON 文件读取 解析 JSON 第三方库 数据类型映射

C++ 是一种功能强大的编程语言,可以轻松读取和处理 JSON 文件。JSON 是一种常见的数据交换格式,经常用于 Web 应用程序中。让我们来看看如何使用 C++ 读取 JSON 文件。

首先,我们需要引入一个 JSON 库。在 C++ 中,存在许多 JSON 库,如:RapidJSON、JSON for Modern C++、nlohmann/json 等等。在这里,我们会选择一个简单易上手的库:RapidJSON。

首先,我们需要从文件中读取 JSON 数据。使用 RapidJSON,我们需要访问 JSON 文件的根级元素。可以使用 `Document` 类来解析 JSON 文件。


#include <iostream>

#include "rapidjson/document.h"

#include "rapidjson/writer.h"

#include "rapidjson/stringbuffer.h"

#include <fstream>

#include <string>

using namespace rapidjson;

int main() {

 // 从文件中读取 JSON 数据

 std::ifstream input("mydata.json");

 std::string json((std::istreambuf_iterator<char>(input)), std::istreambuf_iterator<char>());

 Document d;

 d.Parse(json.c_str());

 // 在这里我们可以使用 `d` 获取根级元素。

 // 例如,`d.HasMember("name")` 将会检查 JSON 文件中是否包含 "name" 属性。

 return 0;

}

现在,我们已经成功读取了 JSON 数据。假设我们有一个名为 "mydata.json" 的文件,其内容如下:

json

{

 "name": "John Doe",

 "age": 30,

 "isMarried": true,

 "hobbies": ["reading", "running"]

}

假如我们希望获取 "name" 属性的值,可以使用下面的方法:


std::cout << "Name: " << d["name"].GetString() << std::endl;

同样的,如果我们希望获取 "hobbies" 属性的值,可以使用下面的方法:


const Value& a = d["hobbies"];

assert(a.IsArray());

for (SizeType i = 0; i < a.Size(); i++) // 使用 `SizeType` 而非 `size_t`

 std::cout << a[i].GetString() << std::endl;

这样,我们就完成了 JSON 文件的读取。更多关于 RapidJSON 的用法可以参考官方文档。通过 C++ 读取 JSON 文件非常简单,您可以使用语言的强大功能来处理 JSON 数据并将其应用到您的应用程序中。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复