rapidJson读取嵌套json
时间: 2023-06-22 14:24:01 浏览: 197
RapidJSON是一个快速的C++ JSON解析器/生成器,支持SAX和DOM风格API。它支持多种平台,并且易于集成到现有项目中。
下面是使用RapidJSON读取嵌套JSON的示例代码:
```c++
#include "rapidjson/document.h"
#include "rapidjson/prettywriter.h"
#include "rapidjson/stringbuffer.h"
#include <iostream>
#include <string>
using namespace rapidjson;
using namespace std;
int main()
{
// 假设我们有以下嵌套的json数据
string jsonStr = "{\"name\": \"John\", \"age\": 30, \"address\": {\"street\": \"123 Main St\", \"city\": \"Anytown\", \"state\": \"CA\", \"zip\": \"12345\"}, \"phone_numbers\": [{\"type\": \"home\", \"number\": \"555-1234\"}, {\"type\": \"work\", \"number\": \"555-5678\"}]}";
// 解析JSON字符串
Document d;
d.Parse(jsonStr.c_str());
// 访问JSON数据
cout << "Name: " << d["name"].GetString() << endl;
cout << "City: " << d["address"]["city"].GetString() << endl;
// 遍历JSON数组
const Value& phoneNumbers = d["phone_numbers"];
for (SizeType i = 0; i < phoneNumbers.Size(); i++)
{
const Value& phoneNumber = phoneNumbers[i];
cout << "Phone Type: " << phoneNumber["type"].GetString() << endl;
cout << "Phone Number: " << phoneNumber["number"].GetString() << endl;
}
return 0;
}
```
输出:
```
Name: John
City: Anytown
Phone Type: home
Phone Number: 555-1234
Phone Type: work
Phone Number: 555-5678
```
在这个示例中,我们使用RapidJSON的Document类解析JSON字符串,并使用键值对来访问嵌套的JSON数据。我们还演示了如何遍历JSON数组。
阅读全文