cjson和cpp json都是C++中常用的json解析庫。他們都可以將json數據轉化為C++中的對象或者數據結構。但是兩者也有一些區別。
cjson是一個輕量級的json解析庫,它能夠處理標準的json格式。cjson的API很簡單,易于使用。它只包含一個頭文件,使用時只需簡單地將其引入即可開始解析json數據。以下是一個簡單的使用cjson的例子:
#include "cJSON.h" int main(int argc, char * argv[]) { //json示例字符串 char * json_sample = "{\"name\":\"John\", \"age\":30, \"city\":\"New York\"}"; //解析json數據 cJSON * json = cJSON_Parse(json_sample); //獲取json對象中的值 char * name = cJSON_GetObjectItem(json, "name")->valuestring; int age = cJSON_GetObjectItem(json, "age")->valueint; char * city = cJSON_GetObjectItem(json, "city")->valuestring; //打印解析結果 printf("name=%s, age=%d, city=%s\n", name, age, city); return 0; }
cpp json是一個現代的、C++11標準兼容的json庫。它提供了面向對象的API,比cjson更加靈活。cpp json的使用也很簡單。以下是一個簡單的使用cpp json的例子:
#include "json.hpp" using json = nlohmann::json; int main(int argc, char * argv[]) { //json示例字符串 std::string json_sample = "{\"name\":\"John\", \"age\":30, \"city\":\"New York\"}"; //解析json數據 json j = json::parse(json_sample); //獲取json對象中的值 std::string name = j["name"]; int age = j["age"]; std::string city = j["city"]; //打印解析結果 std::cout<< "name="<< name<< ", age="<< age<< ", city="<< city<< std::endl; return 0; }
通過比較上述兩個例子可以發現,cpp json的使用更加現代化、面向對象化。不同于cjson的使用需要手動獲取對象的值,cpp json可以直接通過對象名訪問數據。而cpp json也并不比cjson復雜,相反,它也很容易使用。我們可以根據需要選擇使用哪個json庫,以便更好地完成我們的開發任務。