c++ json可以直接转对象吗
时间: 2023-12-29 09:02:09 浏览: 39
是的,你可以使用第三方库(例如RapidJSON或nlohmann/json)将JSON字符串解析为C++对象。这些库提供了一些类和函数,可以将JSON字符串解析为C++对象,例如 std::string, int, double, bool, std::vector, std::map 等等。下面是一个使用 nlohmann/json 库将JSON字符串解析为C++对象的示例:
```c++
#include <iostream>
#include <nlohmann/json.hpp>
using json = nlohmann::json;
int main()
{
// JSON字符串
std::string json_string = R"(
{
"name": "John",
"age": 30,
"is_student": true,
"grades": [90, 85, 95],
"address": {
"street": "123 Main St",
"city": "Anytown",
"state": "CA",
"zip": "12345"
}
}
)";
// 将JSON字符串解析为C++对象
json j = json::parse(json_string);
// 访问C++对象中的值
std::string name = j["name"];
int age = j["age"];
bool is_student = j["is_student"];
std::vector<int> grades = j["grades"];
std::string street = j["address"]["street"];
std::string city = j["address"]["city"];
std::string state = j["address"]["state"];
std::string zip = j["address"]["zip"];
// 打印C++对象中的值
std::cout << "Name: " << name << std::endl;
std::cout << "Age: " << age << std::endl;
std::cout << "Is student: " << is_student << std::endl;
std::cout << "Grades: ";
for (int grade : grades) {
std::cout << grade << " ";
}
std::cout << std::endl;
std::cout << "Address: " << street << ", " << city << ", " << state << " " << zip << std::endl;
return 0;
}
```
输出:
```
Name: John
Age: 30
Is student: true
Grades: 90 85 95
Address: 123 Main St, Anytown, CA 12345
```