C++ 获取json数据中的list
时间: 2023-08-05 20:07:02 浏览: 46
在C++中,可以使用第三方JSON库来解析JSON数据。这里以RapidJSON库为例,假设我们有以下JSON数据:
```json
{
"name": "John",
"age": 30,
"hobbies": ["reading", "swimming", "traveling"]
}
```
使用C++代码来解析这个JSON数据并获取'hobbies'键对应的列表:
```c++
#include "rapidjson/document.h"
#include "rapidjson/writer.h"
#include "rapidjson/stringbuffer.h"
#include <iostream>
#include <string>
#include <vector>
using namespace rapidjson;
using namespace std;
int main() {
string json_data = "{\"name\": \"John\", \"age\": 30, \"hobbies\": [\"reading\", \"swimming\", \"traveling\"]}";
Document doc;
doc.Parse(json_data.c_str());
if (!doc.IsObject()) {
cout << "Invalid JSON data!" << endl;
return 0;
}
const Value& hobbies = doc["hobbies"];
vector<string> hobbies_list;
if (hobbies.IsArray()) {
for (SizeType i = 0; i < hobbies.Size(); i++) {
hobbies_list.push_back(hobbies[i].GetString());
}
}
for (const auto& hobby : hobbies_list) {
cout << hobby << endl;
}
return 0;
}
```
输出结果为:
```
reading
swimming
traveling
```
这里使用了RapidJSON库将JSON字符串解析为`Document`对象,然后通过`IsObject()`方法判断是否为JSON对象,使用`[]`运算符获取'hobbies'键对应的值,再使用`IsArray()`方法判断该值是否为JSON数组,然后使用`Size()`方法获取数组大小,使用`GetString()`方法获取每个元素的字符串值,并将字符串值存储到`vector`中。