JSON數據格式被廣泛用于Web應用程序中,在這里它被視為輕量級且易于閱讀和編寫的數據格式,許多語言都具有將JSON字符串解析為對象的內置功能。C語言的開發者們需要處理JSON數據,也擁有相應的C JSON庫。本文將介紹如何將C JSON數據轉換為list<>。
#include <stdio.h>
#include <jansson.h>
#include <list>
int main() {
char *json_str = "{\"name\":\"John\",\"age\":30,\"hobbies\":[\"running\",\"swimming\",\"reading\"]}";
json_error_t error;
json_t *root = json_loads(json_str, 0, &error);
if (!root) {
printf("error: on line %d: %s\n", error.line, error.text);
return 1;
}
// 獲取JSON對象中的“hobbies”數組
json_t *hobbies = json_object_get(root, "hobbies");
size_t index;
json_t *value;
// 將數組元素添加到list中
std::list<std::string> hobby_list;
json_array_foreach(hobbies, index, value) {
hobby_list.push_back(json_string_value(value));
}
// 輸出list中的元素
std::list<std::string>::iterator it;
for (it = hobby_list.begin(); it != hobby_list.end(); ++it) {
printf("%s\n", (*it).c_str());
}
json_decref(root);
return 0;
}
在上面的示例中,我們使用了jansson庫,它是一個用于解析和生成JSON數據的C語言庫。我們首先定義一個字符串變量并將其分配給一個JSON對象。然后,我們獲取對象中“hobbies”數組的引用,并使用json_array_foreach函數將其元素添加到list中。最后,我們遍歷list并輸出所有元素。注意,在使用c++容器時需要包含