最近在編寫一個項目過程中需要解析JSON數據,這里我分享一下C++中解析JSON的方法。
首先我們需要使用一個JSON庫,下面我選擇了開源的jsoncpp庫來解析JSON數據。它是一個輕量級的C++庫,可以將一個字符串或者文件中的JSON數據解析成一個JSON對象,支持格式化程序,以及將JSON對象序列化為字符串或寫入文件。
下面是一個基本的JSON字符串:
{ "name": "張三", "age": 18, "isStudent": true, "scores": [95, 99, 98] }
在C++中使用jsoncpp庫解析上面的JSON字符串的示例代碼如下:
// 引入jsoncpp頭文件 #include#include // JSON字符串 std::string jsonStr = "{\"name\":\"張三\",\"age\":18,\"isStudent\":true,\"scores\":[95,99,98]}"; // 解析JSON字符串 Json::Value root; Json::Reader reader; bool success = reader.parse(jsonStr, root); if (success) { std::string name = root["name"].asString(); // 獲取字符串類型的值 int age = root["age"].asInt(); // 獲取整數類型的值 bool isStudent = root["isStudent"].asBool(); // 獲取布爾類型的值 Json::Value scores = root["scores"]; // 獲取數組 for (int i = 0; i< scores.size(); i++) { int score = scores[i].asInt(); // 獲取數組中的值 } }
上面的代碼很容易理解,使用Json::Reader對象的parse()方法解析JSON字符串,然后可以通過Json::Value對象的asXXX()方法獲取對應類型的值,也可以通過[]操作符獲取對象或數組中的值,也可以通過size()獲取數組的長度。
通過這樣簡單地使用jsoncpp庫,我們就可以解析JSON數據了。