C語言是一門廣泛使用的編程語言,可以用于開發各種應用程序。在處理數據時,常常需要解析JSON數據。本文介紹如何使用C語言循環獲取JSON值。
#include<stdio.h> #include<stdlib.h> #include<string.h> #include<jansson.h> int main() { const char *json_string = "{\"name\":\"Jack\",\"age\":18,\"hobby\":[\"swimming\",\"reading\"]}"; json_error_t error; json_t *root = json_loads(json_string, 0, &error); //將json字符串轉換成json_t類型 if (!root) { fprintf(stderr, "error: on line %d: %s\n", error.line, error.text); return -1; } json_t *name, *age, *hobby; const char *name_str; int age_int; size_t i; name = json_object_get(root, "name"); //獲取name值 name_str = json_string_value(name); age = json_object_get(root, "age"); //獲取age值 age_int = json_integer_value(age); printf("name:%s, age:%d\n", name_str, age_int); hobby = json_object_get(root, "hobby"); //獲取hobby值 for (i = 0; i< json_array_size(hobby); i++) //循環獲取hobby值 { json_t* array_element = json_array_get(hobby, i); const char* hobby_str = json_string_value(array_element); printf("hobby[%d]:%s\n", i, hobby_str); } json_decref(root); return 0; }
上述代碼中,首先定義了一個JSON字符串,然后通過調用json_loads函數將其轉換成json_t類型的根節點root,如果出現解析錯誤,則打印錯誤信息并退出程序。
接著,通過調用json_object_get函數獲取JSON鍵值對中的name和age的值,并使用相應的類型轉換函數將其轉換為C語言的數據類型。最后,通過json_object_get函數獲取hobby值,并使用循環和json_array_get函數遍歷該數組中的元素。
綜上,使用C語言循環獲取JSON值是一項基礎的技能,可以在開發中發揮重要作用。