c++ rapidjson转map
时间: 2023-07-05 09:31:59 浏览: 68
如果你使用的是rapidjson库,那么可以使用`Value`类来实现C++中JSON转Map的功能,下面是一个简单的示例代码:
```c++
#include <iostream>
#include <map>
#include "rapidjson/document.h"
#include "rapidjson/writer.h"
#include "rapidjson/stringbuffer.h"
using namespace rapidjson;
int main() {
std::string jsonStr = R"(
{
"key1": "value1",
"key2": {
"innerKey1": 123,
"innerKey2": "value2"
}
}
)";
Document doc;
doc.Parse(jsonStr.c_str());
std::map<std::string, Value> myMap;
for (Value::ConstMemberIterator itr = doc.MemberBegin(); itr != doc.MemberEnd(); ++itr) {
myMap[itr->name.GetString()] = itr->value;
}
for (auto const& [key, val] : myMap) {
StringBuffer buffer;
Writer<StringBuffer> writer(buffer);
val.Accept(writer);
std::cout << key << ": " << buffer.GetString() << std::endl;
}
return 0;
}
```
这里我们使用`Document`类将JSON字符串解析为`Value`类型的对象,然后将其赋值给一个`std::map<std::string, Value>`类型的变量,从而实现了JSON转Map的功能。注意到`Value`类型支持迭代器,我们可以利用迭代器遍历JSON对象。最后使用`Accept`函数将`Value`类型的值转换为字符串输出。