rapidjson解析json数据
时间: 2024-09-05 19:01:49 浏览: 59
RapidJSON 是一个高效的 C++ JSON 解析器和生成器库。它支持 SAX 和 DOM 风格的 API,以及对流式解析和输出的支持。以下是一个简单的使用示例,展示了如何使用 RapidJSON 解析 JSON 数据。
首先,您需要包含头文件:
```cpp
#include "rapidjson/document.h"
#include "rapidjson/stringbuffer.h"
#include "rapidjson/prettywriter.h"
#include <iostream>
```
然后,您可以使用以下代码来解析一个 JSON 字符串:
```cpp
int main() {
// 假设我们有以下JSON数据作为字符串
const char* json = "{\"name\":\"John\",\"age\":30,\"city\":\"New York\"}";
// 创建一个Document对象来存储解析后的数据
rapidjson::Document d;
// 解析JSON字符串
d.Parse(json);
// 检查解析是否成功
if (d.HasParseError()) {
std::cerr << "Error at offset " << d.GetErrorOffset() << ": " << rapidjson::GetParseError_En(d.GetParseError()) << std::endl;
return -1;
}
// 访问解析后的数据
if (d.HasMember("name") && d["name"].IsString()) {
std::cout << "Name: " << d["name"].GetString() << std::endl;
}
if (d.HasMember("age") && d["age"].IsNumber()) {
std::cout << "Age: " << d["age"].GetInt() << std::endl;
}
if (d.HasMember("city") && d["city"].IsString()) {
std::cout << "City: " << d["city"].GetString() << std::endl;
}
return 0;
}
```
在上述代码中,我们首先定义了一个 JSON 字符串,并使用 `rapidjson::Document` 类型的对象来存储解析后的数据。通过调用 `Parse` 方法对 JSON 字符串进行解析,并检查是否有解析错误。如果解析成功,我们可以使用 `HasMember` 和 `Is*` 系列方法来访问特定的 JSON 元素,并获取其值。
请确保在您的项目中包含了 RapidJSON 库,并正确设置了包含路径和链接设置,以便编译和运行上述代码。
阅读全文