C語言是一種很常用的編程語言,它可以通過解析JSON數據來讀取和保存數據。在使用C語言解析JSON數據時,我們可以使用一個流式解析器,這樣就可以將JSON數據流作為輸入,逐步解析出其中的鍵和值。
#include <stdio.h> #include <jansson.h> int main() { char *json_str = "{ \"name\":\"Tom\", \"age\":25 }"; json_t *root = NULL; json_error_t error; root = json_loads(json_str, 0, &error); if(!root) { printf("JSON解析失?。?s\n", error.text); return 1; } const char *name; json_t *age; json_unpack(root, "{s:s, s:o}", "name", &name, "age", &age); printf("name:%s, age:%d\n", name, json_integer_value(age)); return 0; }
上面的代碼使用了json_loads()函數來加載JSON數據。然后,我們可以通過指定鍵和值的方式來解析這些數據,這里使用json_unpack()函數來進行解析。
JSON數據通常是由多個鍵值對組成,因此我們需要一個循環來遍歷所有的鍵值對。這里給出一個示例代碼:
json_t *root = NULL; json_t *value = NULL; json_t *object = NULL; const char *key; size_t index; root = json_loads(json_str, 0, &error); if(!root) { printf("JSON解析失?。?s\n", error.text); return 1; } json_object_foreach(root, key, value) { printf("key: %s\n", key); if(json_is_object(value)) { object = value; json_object_foreach(object, key, value) { printf("%s: %s\n", key, json_string_value(value)); } } else { printf("value: %s\n", json_string_value(value)); } }
此代碼片段將遞歸地遍歷JSON數據,以獲取所有的鍵和值。
在C語言中解析JSON數據流可能比較復雜,但是使用適當的工具庫和解析器可以大大簡化這個過程。