c++ fastjson转map
时间: 2023-07-12 16:28:11 浏览: 162
如果你使用的是fastjson库,那么可以使用`Json::Value`类来实现C++中JSON转Map的功能,下面是一个简单的示例代码:
```c++
#include <iostream>
#include <map>
#include "json/json.h"
int main() {
std::string jsonStr = R"(
{
"key1": "value1",
"key2": {
"innerKey1": 123,
"innerKey2": "value2"
}
}
)";
Json::Value root;
Json::CharReaderBuilder builder;
Json::CharReader* reader = builder.newCharReader();
std::string errors;
bool parsingSuccessful = reader->parse(jsonStr.c_str(), jsonStr.c_str() + jsonStr.size(), &root, &errors);
delete reader;
if (!parsingSuccessful) {
std::cout << "Failed to parse JSON: " << errors << std::endl;
return 1;
}
std::map<std::string, Json::Value> myMap = root.getMemberNames();
for (auto const& [key, val] : myMap) {
std::cout << key << ": " << val.toStyledString() << std::endl;
}
return 0;
}
```
这里我们使用`Json::CharReader`类将JSON字符串解析为`Json::Value`类型的对象,然后将其赋值给一个`std::map<std::string, Json::Value>`类型的变量,从而实现了JSON转Map的功能。注意到`Json::Value`类型支持`getMemberNames`函数,返回一个`std::vector<std::string>`类型的对象,包含了JSON对象中所有的key,我们可以利用这个函数来实现JSON对象的遍历。最后使用`toStyledString`函数将`Json::Value`类型的值转换为字符串输出。
阅读全文