c語言是一種廣泛使用的編程語言,不僅可以用于開發操作系統、網絡協議等底層系統,也可以用于開發各種應用程序。近年來,隨著互聯網和移動互聯網的發展,數據交換的需求日益增加,其中json是一種廣泛使用的數據交換格式。在c語言中,如何解析json字符串呢?
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <jansson.h> int main() { char *json_str = "{\"name\":\"Tom\",\"age\":18,\"gender\":\"male\",\"hobby\":[\"reading\",\"music\"]}"; json_error_t error; json_t *root = json_loads(json_str, 0, &error); //將json字符串轉換為json對象 if(!root) { printf("json_loads error: %s\n", error.text); return 1; } json_t *name = json_object_get(root, "name"); //獲取json對象的值 char *name_str = json_string_value(name); printf("name: %s\n", name_str); json_t *age = json_object_get(root, "age"); int age_int = json_integer_value(age); printf("age: %d\n", age_int); json_t *gender = json_object_get(root, "gender"); char *gender_str = json_string_value(gender); printf("gender: %s\n", gender_str); json_t *hobby = json_object_get(root, "hobby"); json_t *hobby_arr; size_t index; printf("hobby: "); json_array_foreach(hobby, index, hobby_arr) //遍歷json數組 { char *hobby_str = json_string_value(hobby_arr); printf("%s ", hobby_str); } json_decref(root); //釋放json對象的內存 return 0; }
以上代碼演示了如何使用jansson庫解析json字符串。首先使用json_loads函數將json字符串轉換為json對象,然后使用json_object_get函數獲取對象的值。其中,返回值為char*類型的json_string_value函數可以獲取json字符串的值,返回值為int類型的json_integer_value函數可以獲取json整數的值,返回值為json_t*類型的json_object_get函數可以獲取json對象或數組。
總之,解析json字符串是我們經常使用的功能,而c語言作為一種底層的編程語言,也可以輕松實現這個功能,只需要使用適當的庫和一些簡單的語法即可。