JSON(JavaScript Object Notation)是一種輕量級的數據交換格式,其在C語言中的解析和創建非常簡單。使用JSON,應用可以將數據以字符串的形式傳輸到其他應用程序或Web服務,在網絡通信中扮演著重要角色。
在C語言中,可以使用json-c庫來解析JSON數據。該庫提供了一組函數,用于從一個JSON字符串讀取數據。以下是一個簡單的示例:
#include <stdio.h> #include <json-c/json.h> int main(void) { const char *json_string = "{\"name\":\"John\", \"age\":30, \"city\":\"New York\"}"; json_object *jobj = json_tokener_parse(json_string); printf("Name: %s\n", json_object_get_string(json_object_object_get(jobj, "name"))); printf("Age: %d\n", json_object_get_int(json_object_object_get(jobj, "age"))); printf("City: %s\n", json_object_get_string(json_object_object_get(jobj, "city"))); json_object_put(jobj); return 0; }
以上代碼將打印以下內容:
Name: John Age: 30 City: New York
在上述代碼中,我們使用json_tokener_parse函數將一個JSON字符串解析成一個json_object對象。之后,我們使用json_object_object_get函數從該對象中獲取所需的屬性。如果屬性是字符串類型,則使用json_object_get_string函數獲取其值。如果是整型,則使用json_object_get_int函數獲取其值。最后,我們使用json_object_put函數釋放該對象,避免內存泄漏。
在創建JSON數據時,可以使用json-c庫來構建json_object對象。以下是一個簡單的示例:
#include <stdio.h> #include <json-c/json.h> int main(void) { json_object *jobj = json_object_new_object(); json_object_object_add(jobj, "name", json_object_new_string("John")); json_object_object_add(jobj, "age", json_object_new_int(30)); json_object_object_add(jobj, "city", json_object_new_string("New York")); printf("%s\n", json_object_to_json_string(jobj)); json_object_put(jobj); return 0; }
以上代碼將打印以下內容:
{"name":"John","age":30,"city":"New York"}
在上述代碼中,我們首先使用json_object_new_object函數創建一個空的json_object對象。之后,我們使用json_object_object_add函數向該對象中添加屬性。我們使用json_object_new_string函數創建一個字符串類型的值,并使用json_object_new_int函數創建一個整型類型的值。最后,我們使用json_object_to_json_string函數將json_object對象轉換成JSON字符串并打印出來。最后,我們使用json_object_put函數釋放該對象,避免內存泄漏。