JSON(JavaScript Object Notation,JavaScript對象表示法)是一種輕量級的數據交換格式,常用于web應用程序中的數據傳輸。JSON是一種文本格式,易于讀取和編寫,并簡化了數據交換。C語言中可以通過第三方庫實現JSON格式的生成和解析。
在C語言中,通常使用JSON-C或Jansson等第三方庫進行JSON數據處理。這些庫可以將JSON格式的字符串轉化為C語言中的內部數據結構,也可以將C語言的數據結構轉化為JSON格式字符串。
下面是一個使用Jansson庫生成JSON格式數據的例子:
#include <jansson.h> int main() { // 創建一個json對象 json_t *object = json_object(); // 添加鍵值對 json_object_set_new(object, "name", json_string("Tom")); json_object_set_new(object, "age", json_integer(18)); // 生成JSON格式字符串 char *json_data = json_dumps(object, JSON_INDENT(4)); // 打印結果 printf("%s", json_data); // 釋放內存 json_decref(object); free(json_data); return 0; }
在上面的代碼中,首先使用json_object()函數創建一個空的json對象,然后使用json_object_set_new()函數添加鍵值對,包括字符串類型的"name"和整數類型的"age",最后使用json_dumps()函數將json對象轉化為JSON格式的字符串。JSON_INDENT(4)參數表示使用4個空格縮進。
另外,使用第三方庫也可以實現JSON格式的解析,下面是一個使用json-c庫解析JSON字符串的例子:
#include <json-c/json.h> int main() { const char *json_str = "{\"name\":\"Tom\",\"age\":18}"; // 解析JSON字符串 json_object *object = json_tokener_parse(json_str); // 獲取鍵值對 const char *name = json_object_get_string(json_object_object_get(object, "name")); int age = json_object_get_int(json_object_object_get(object, "age")); // 打印結果 printf("Name: %s\nAge: %d\n", name, age); // 釋放內存 json_object_put(object); return 0; }
在上面的代碼中,使用json_tokener_parse()函數解析JSON字符串,返回一個json_object對象。然后通過json_object_object_get()函數獲取鍵值對,再使用json_object_get_string()和json_object_get_int()函數轉化為相應的C語言中的類型。最后,使用json_object_put()函數釋放資源。