色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

c json轉list

吉茹定2年前8瀏覽0評論

C JSON轉List<>

#include <stdio.h>
#include <cjson/cJSON.h>
#include <list>
int main() {
char *json_str =
"{"
"   \"name\": \"Jack\","
"   \"age\": 30,"
"   \"hobby\": [\"basketball\", \"swimming\", \"reading\"]"
"}";
cJSON *root = cJSON_Parse(json_str);
char *name = cJSON_GetObjectItem(root, "name")->valuestring;
int age = cJSON_GetObjectItem(root, "age")->valueint;
cJSON *hobby = cJSON_GetObjectItem(root, "hobby");
list<char *> hobby_lst;
cJSON *item = hobby->child;
while (item != NULL) {
hobby_lst.push_back(item->valuestring);
item = item->next;
}
printf("name=%s, age=%d\n", name, age);
for (char *str: hobby_lst) {
printf("%s\n", str);
}
cJSON_Delete(root);
return 0;
}

C JSON庫提供了部分基礎數據類型,如:NULL、true、false、number和string等,同時還支持對象(object)和數組(array)類型的數據,可以根據需要進行嵌套操作。對于C++開發人員來說,使用C庫時,轉換為C++標準庫數據類型時非常方便,如將JSON數組轉換為std::vector類型數據,將JSON對象轉換為std::map類型數據等,但對于項目使用list<>類型較多的人來說,需要將JSON數組轉換為list<>類型數據。

在以上示例代碼中,我們將JSON字符串解析為cJSON對象(即root),然后依次獲取對象中的屬性值(name、age、hobby)。對于hobby屬性,是一個JSON數組,需要遍歷數組中的所有元素,并將元素添加到list<>實例對象中。

list<char *> hobby_lst;
cJSON *item = hobby->child;
while (item != NULL) {
hobby_lst.push_back(item->valuestring);
item = item->next;
}

在以上代碼中,我們定義了一個list<>類型對象(hobby_lst)用于存放JSON數組中的每個元素。從hobby屬性中獲取到數組的首元素(即child),然后遍歷數組中所有元素,并將元素的valuestring值(即元素的值)添加到hobby_lst中,并將下一個元素item指向數組的下一個元素,循環直到item為NULL時退出循環。

最后輸出C++標準庫數據類型即可。