使用JSON for Modern C++解析以下JSON:{"Origin":2,"TotalNum":100,"MusicListInfo":[{"SongID":0,"SongName": "xxx","SongArtist": "xxx"},{"SongID":1,"SongName": "xxx","SongArtist": "xxx"},……]}
时间: 2023-06-28 08:05:48 浏览: 167
以下是使用 JSON for Modern C++ 库解析给定的 JSON 的示例代码:
```c++
#include <iostream>
#include <fstream>
#include "json.hpp"
using json = nlohmann::json;
int main() {
std::ifstream file("example.json");
json j;
file >> j;
int origin = j["Origin"];
int totalNum = j["TotalNum"];
std::vector<std::tuple<int, std::string, std::string>> musicListInfo;
for (const auto& song : j["MusicListInfo"]) {
int songID = song["SongID"];
std::string songName = song["SongName"];
std::string songArtist = song["SongArtist"];
musicListInfo.emplace_back(songID, songName, songArtist);
}
std::cout << "Origin: " << origin << std::endl;
std::cout << "TotalNum: " << totalNum << std::endl;
for (const auto& song : musicListInfo) {
std::cout << "SongID: " << std::get<0>(song) << std::endl;
std::cout << "SongName: " << std::get<1>(song) << std::endl;
std::cout << "SongArtist: " << std::get<2>(song) << std::endl;
}
return 0;
}
```
上述代码首先使用 `std::ifstream` 从文件中读取 JSON 数据,然后使用 `json` 类型的对象 `j` 解析 JSON 数据。
在此示例中,我们使用了 `std::vector<std::tuple<int, std::string, std::string>>` 来存储音乐列表信息中的每首歌曲的 ID、名称和艺术家信息。在遍历每个音乐信息对象时,我们使用 `std::tuple<int, std::string, std::string>` 来存储这些信息,并将它们添加到 `musicListInfo` 向量中。
最后,我们使用 `std::cout` 打印解析出来的 JSON 数据。
阅读全文